Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
RunQueuePool.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* RunQueuePool.cc (C) 2000-2024 */
9/* */
10/* Collection de RunQueue. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/accelerator/core/RunQueuePool.h"
15#include "arcane/accelerator/core/RunQueueBuildInfo.h"
16
17/*---------------------------------------------------------------------------*/
18/*---------------------------------------------------------------------------*/
19
20namespace Arcane::Accelerator
21{
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
28: m_pool_size(1)
29{
30 m_pool.add(RunQueue{});
31}
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35
36/*---------------------------------------------------------------------------*/
37/*---------------------------------------------------------------------------*/
38
40initialize(Runner& runner, Int32 pool_size)
41{
42 initialize(runner, pool_size, {});
43}
44
45/*---------------------------------------------------------------------------*/
46/*---------------------------------------------------------------------------*/
47
49initialize(Runner& runner, Int32 pool_size, const RunQueueBuildInfo& bi)
50{
51 if (pool_size <= 0)
52 pool_size = 1;
53 m_pool_size = pool_size;
54
55 m_pool.clear();
56 m_pool.reserve(m_pool_size);
57
58 for (Int32 i = 0; i < pool_size; ++i) {
59 m_pool.add(makeQueue(runner, bi));
60 }
61}
62
63/*---------------------------------------------------------------------------*/
64/*---------------------------------------------------------------------------*/
65
67barrier() const
68{
69 for (auto q : m_pool)
70 q.barrier();
71}
72
73/*---------------------------------------------------------------------------*/
74/*---------------------------------------------------------------------------*/
75
77setAsync(bool v) const
78{
79 for (auto q : m_pool)
80 q.setAsync(v);
81}
82
83/*---------------------------------------------------------------------------*/
84/*---------------------------------------------------------------------------*/
85
86} // End namespace Arcane::Accelerator
87
88/*---------------------------------------------------------------------------*/
89/*---------------------------------------------------------------------------*/
Informations pour créer une RunQueue.
RunQueuePool()
Créé une instance vide.
void setAsync(bool v) const
Modifie l'état d'asynchronisme des files.
void barrier() const
Force l'attente de toutes les RunQueue.
void initialize(Runner &runner, Int32 pool_size)
Initialise l'instance avec pool_size RunQueue.
File d'exécution pour un accélérateur.
Gestionnaire d'exécution pour accélérateur.
Definition core/Runner.h:53
Espace de nom pour l'utilisation des accélérateurs.
RunQueue makeQueue(const Runner &runner)
Créé une file associée à runner.