File d'exécution pour un accélérateur. Plus de détails...
#include <arcane/accelerator/core/RunQueue.h>
Classes | |
class | ScopedAsync |
Permet de modifier l'asynchronisme de la file pendant la durée de vie de l'instance. Plus de détails... | |
Fonctions membres publiques | |
RunQueue () | |
Créé une file nulle. | |
RunQueue (const Runner &runner) | |
Créé une file associée à runner avec les paramètres par défaut. | |
RunQueue (const Runner &runner, const RunQueueBuildInfo &bi) | |
Créé une file associée à runner avec les paramètres bi. | |
RunQueue (const RunQueue &) | |
RunQueue & | operator= (const RunQueue &) |
RunQueue (RunQueue &&) noexcept | |
RunQueue & | operator= (RunQueue &&) noexcept |
bool | isNull () const |
Indique si la RunQueue est nulle. | |
eExecutionPolicy | executionPolicy () const |
Politique d'exécution de la file. | |
bool | isAcceleratorPolicy () const |
Indique si l'instance est associée à un accélérateur. | |
void | setAsync (bool v) |
Positionne l'asynchronisme de l'instance. | |
bool | isAsync () const |
Indique si la file d'exécution est asynchrone. | |
const RunQueue & | addAsync (bool is_async) const |
Positionne l'asynchronisme de l'instance. | |
void | barrier () const |
Bloque tant que toutes les commandes associées à la file ne sont pas terminées. | |
void | copyMemory (const MemoryCopyArgs &args) const |
Copie des informations entre deux zones mémoires. | |
void | prefetchMemory (const MemoryPrefetchArgs &args) const |
Effectue un préfetching de la mémoire. | |
void * | platformStream () const |
Pointeur sur la structure interne dépendante de l'implémentation. | |
Gestion des évènements | |
| |
void | recordEvent (RunQueueEvent &event) |
void | recordEvent (Ref< RunQueueEvent > &event) |
Enregistre l'état de l'instance dans event. | |
void | waitEvent (RunQueueEvent &event) |
Bloque l'exécution sur l'instance tant que les jobs enregistrés dans event ne sont pas terminés. | |
void | waitEvent (Ref< RunQueueEvent > &event) |
Bloque l'exécution sur l'instance tant que les jobs enregistrés dans event ne sont pas terminés. | |
Gestion mémoire | |
MemoryAllocationOptions | allocationOptions () const |
Options d'allocation associée à cette file. | |
void | setMemoryRessource (eMemoryRessource mem) |
Positionne la ressource mémoire utilisée pour les allocations avec cette instance. | |
eMemoryRessource | memoryRessource () const |
Ressource mémoire utilisée pour les allocations avec cette instance. | |
Amis | |
class | impl::RunCommandLaunchInfo |
class | VariableViewBase |
class | NumArrayViewBase |
RunCommand | makeCommand (const RunQueue &run_queue) |
Créé une commande associée à la file run_queue. | |
RunCommand | makeCommand (const RunQueue *run_queue) |
Créé une commande associée à la file run_queue. | |
File d'exécution pour un accélérateur.
Cette classe utilise une sémantique par référence. La file d'exécution est détruite lorsque la dernière référence dessus est détruite.
Une file est attachée à une instance de Runner et permet d'exécuter des commandes (RunCommand) sur un accélérateur ou sur le CPU. La méthode executionPolicy() permet de savoir où s'exécutera les commandes issues de la file.
Les instances de cette classe sont créées par l'appel à makeQueue(Runner). On peut ensuite créer des noyaux de calcul (RunCommand) via l'appel à makeCommand().
Le constructeur par défaut construit Une file nulle qui ne peut pas être utilisée pour lancer des commandes. Les seules opérations autorisées sur la file nulle sont isNull(), executionPolicy(), isAcceleratorPolicy(), barrier(), allocationOptions() et memoryRessource().
Les méthodes de cette classe ne sont pas thread-safe pour une même instance.
Définition à la ligne 51 du fichier core/RunQueue.h.
Arcane::Accelerator::RunQueue::RunQueue | ( | ) |
Créé une file nulle.
Définition à la ligne 44 du fichier RunQueue.cc.
Arcane::Accelerator::RunQueue::~RunQueue | ( | ) |
Définition à la ligne 136 du fichier RunQueue.cc.
|
explicit |
Créé une file associée à runner avec les paramètres par défaut.
Définition à la ligne 52 du fichier RunQueue.cc.
Arcane::Accelerator::RunQueue::RunQueue | ( | const Runner & | runner, |
const RunQueueBuildInfo & | bi | ||
) |
Créé une file associée à runner avec les paramètres bi.
Définition à la ligne 61 du fichier RunQueue.cc.
Arcane::Accelerator::RunQueue::RunQueue | ( | const RunQueue & | x | ) |
Définition à la ligne 88 du fichier RunQueue.cc.
|
noexcept |
Définition à la ligne 97 du fichier RunQueue.cc.
const RunQueue & Arcane::Accelerator::RunQueue::addAsync | ( | bool | is_async | ) | const |
Positionne l'asynchronisme de l'instance.
Retourne l'instance.
Définition à la ligne 301 du fichier RunQueue.cc.
MemoryAllocationOptions Arcane::Accelerator::RunQueue::allocationOptions | ( | ) | const |
Options d'allocation associée à cette file.
Il est possible de changer la ressource mémoire et donc l'allocateur utilisé via setMemoryRessource().
Définition à la ligne 332 du fichier RunQueue.cc.
void Arcane::Accelerator::RunQueue::barrier | ( | ) | const |
Bloque tant que toutes les commandes associées à la file ne sont pas terminées.
Définition à la ligne 157 du fichier RunQueue.cc.
void Arcane::Accelerator::RunQueue::copyMemory | ( | const MemoryCopyArgs & | args | ) | const |
Copie des informations entre deux zones mémoires.
Définition à la ligne 229 du fichier RunQueue.cc.
eExecutionPolicy Arcane::Accelerator::RunQueue::executionPolicy | ( | ) | const |
Politique d'exécution de la file.
Définition à la ligne 167 du fichier RunQueue.cc.
Références Arcane::Accelerator::None.
Référencé par Arcane::Accelerator::impl::GenericPartitionerIf::apply(), Arcane::Accelerator::impl::GenericPartitionerIf::apply3(), Arcane::Accelerator::impl::arcaneCheckPointerIsAccessible(), Arcane::Accelerator::getPointerAccessibility(), et isAcceleratorPolicy().
bool Arcane::Accelerator::RunQueue::isAcceleratorPolicy | ( | ) | const |
Indique si l'instance est associée à un accélérateur.
Définition à la ligne 323 du fichier RunQueue.cc.
Références executionPolicy(), et Arcane::Accelerator::isAcceleratorPolicy().
bool Arcane::Accelerator::RunQueue::isAsync | ( | ) | const |
Indique si la file d'exécution est asynchrone.
Définition à la ligne 312 du fichier RunQueue.cc.
|
inline |
Indique si la RunQueue est nulle.
Définition à la ligne 115 du fichier core/RunQueue.h.
Référencé par Arcane::Accelerator::impl::arcaneCheckPointerIsAccessible(), Arcane::Accelerator::getPointerAccessibility(), Arcane::Accelerator::ProfileRegion::ProfileRegion(), et Arcane::Accelerator::ProfileRegion::ProfileRegion().
eMemoryRessource Arcane::Accelerator::RunQueue::memoryRessource | ( | ) | const |
Ressource mémoire utilisée pour les allocations avec cette instance.
Définition à la ligne 353 du fichier RunQueue.cc.
Références Arcane::Unknown.
Définition à la ligne 115 du fichier RunQueue.cc.
Définition à la ligne 126 du fichier RunQueue.cc.
void * Arcane::Accelerator::RunQueue::platformStream | ( | ) | const |
Pointeur sur la structure interne dépendante de l'implémentation.
Cette méthode est réservée à un usage avancée. La file retournée ne doit pas être conservée au delà de la vie de l'instance.
Avec CUDA, le pointeur retourné est un 'cudaStream_t*'. Avec HIP, il s'agit d'un 'hipStream_t*'.
Définition à la ligne 218 du fichier RunQueue.cc.
void Arcane::Accelerator::RunQueue::prefetchMemory | ( | const MemoryPrefetchArgs & | args | ) | const |
Effectue un préfetching de la mémoire.
Définition à la ligne 239 du fichier RunQueue.cc.
Référencé par Arcane::VariableUtils::prefetchVariableAsync().
void Arcane::Accelerator::RunQueue::recordEvent | ( | Ref< RunQueueEvent > & | event | ) |
Enregistre l'état de l'instance dans event.
Définition à la ligne 280 du fichier RunQueue.cc.
Références ARCANE_CHECK_POINTER, et recordEvent().
void Arcane::Accelerator::RunQueue::recordEvent | ( | RunQueueEvent & | event | ) |
Enregistre l'état de l'instance dans event.
Définition à la ligne 270 du fichier RunQueue.cc.
Référencé par recordEvent().
void Arcane::Accelerator::RunQueue::setAsync | ( | bool | v | ) |
Positionne l'asynchronisme de l'instance.
Si l'instance est asynchrone, les différentes commandes associées ne sont pas bloquantes et il faut appeler explicitement barrier() pour attendre la fin de l'exécution des commandes.
Définition à la ligne 291 du fichier RunQueue.cc.
void Arcane::Accelerator::RunQueue::setMemoryRessource | ( | eMemoryRessource | mem | ) |
Positionne la ressource mémoire utilisée pour les allocations avec cette instance.
La valeur par défaut est eMemoryRessource::UnifiedMemory si isAcceleratorPolicy()==true et eMemoryRessource::Host sinon.
Définition à la ligne 343 du fichier RunQueue.cc.
void Arcane::Accelerator::RunQueue::waitEvent | ( | Ref< RunQueueEvent > & | event | ) |
Bloque l'exécution sur l'instance tant que les jobs enregistrés dans event ne sont pas terminés.
Définition à la ligne 259 du fichier RunQueue.cc.
Références ARCANE_CHECK_POINTER, et waitEvent().
void Arcane::Accelerator::RunQueue::waitEvent | ( | RunQueueEvent & | event | ) |
Bloque l'exécution sur l'instance tant que les jobs enregistrés dans event ne sont pas terminés.
Définition à la ligne 249 du fichier RunQueue.cc.
Référencé par waitEvent().
|
friend |
Définition à la ligne 57 du fichier core/RunQueue.h.
|
friend |
Créé une commande associée à la file run_queue.
Définition à la ligne 248 du fichier core/RunQueue.h.
|
friend |
Créé une commande associée à la file run_queue.
Définition à la ligne 258 du fichier core/RunQueue.h.
|
friend |
Définition à la ligne 232 du fichier core/RunQueue.h.
|
friend |
Définition à la ligne 231 du fichier core/RunQueue.h.