Arcane  v3.15.0.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::Accelerator::RunQueue

File d'exécution pour un accélérateur. Plus de détails...

#include <arcane/accelerator/core/RunQueue.h>

+ Graphe de collaboration de Arcane::Accelerator::RunQueue:

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 &)
 
RunQueueoperator= (const RunQueue &)
 
 RunQueue (RunQueue &&) noexcept
 
RunQueueoperator= (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 RunQueueaddAsync (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 setConcurrentCommandCreation (bool v)
 Indique si on autorise la création de RunCommand pour cette instance depuis plusieurs threads.
 
bool isConcurrentCommandCreation () const
 Indique si la création concurrente de plusieurs RunCommand est autorisée.
 
void * platformStream () const
 Pointeur sur la structure interne dépendante de l'implémentation.
 
impl::RunQueueImpl * _internalImpl () const
 
Gestion des évènements
Précondition
!isNull()
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 impl::CudaUtils
 
class impl::HipUtils
 
class impl::SyclUtils
 
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.
 
bool operator== (const RunQueue &q1, const RunQueue &q2)
 
bool operator!= (const RunQueue &q1, const RunQueue &q2)
 

Description détaillée

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.

Documentation des constructeurs et destructeur

◆ RunQueue() [1/5]

Arcane::Accelerator::RunQueue::RunQueue ( )

Créé une file nulle.

Définition à la ligne 45 du fichier RunQueue.cc.

◆ ~RunQueue()

Arcane::Accelerator::RunQueue::~RunQueue ( )

Définition à la ligne 137 du fichier RunQueue.cc.

◆ RunQueue() [2/5]

Arcane::Accelerator::RunQueue::RunQueue ( const Runner runner)
explicit

Créé une file associée à runner avec les paramètres par défaut.

Définition à la ligne 53 du fichier RunQueue.cc.

◆ RunQueue() [3/5]

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 62 du fichier RunQueue.cc.

◆ RunQueue() [4/5]

Arcane::Accelerator::RunQueue::RunQueue ( const RunQueue x)

Définition à la ligne 89 du fichier RunQueue.cc.

◆ RunQueue() [5/5]

Arcane::Accelerator::RunQueue::RunQueue ( RunQueue &&  x)
noexcept

Définition à la ligne 98 du fichier RunQueue.cc.

Documentation des fonctions membres

◆ _internalImpl()

impl::RunQueueImpl * Arcane::Accelerator::RunQueue::_internalImpl ( ) const

Définition à la ligne 206 du fichier RunQueue.cc.

◆ addAsync()

const RunQueue & Arcane::Accelerator::RunQueue::addAsync ( bool  is_async) const

Positionne l'asynchronisme de l'instance.

Retourne l'instance.

Précondition
!isNull()
Voir également
setAsync().

Définition à la ligne 308 du fichier RunQueue.cc.

◆ allocationOptions()

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 339 du fichier RunQueue.cc.

◆ barrier()

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 158 du fichier RunQueue.cc.

Référencé par Arcane::Accelerator::impl::GenericPartitionerIf::apply().

◆ copyMemory()

void Arcane::Accelerator::RunQueue::copyMemory ( const MemoryCopyArgs args) const

Copie des informations entre deux zones mémoires.

Définition à la ligne 236 du fichier RunQueue.cc.

◆ executionPolicy()

◆ isAcceleratorPolicy()

bool Arcane::Accelerator::RunQueue::isAcceleratorPolicy ( ) const

Indique si l'instance est associée à un accélérateur.

Définition à la ligne 330 du fichier RunQueue.cc.

Références executionPolicy(), et Arcane::Accelerator::isAcceleratorPolicy().

Référencé par setConcurrentCommandCreation().

◆ isAsync()

bool Arcane::Accelerator::RunQueue::isAsync ( ) const

Indique si la file d'exécution est asynchrone.

Définition à la ligne 319 du fichier RunQueue.cc.

◆ isConcurrentCommandCreation()

bool Arcane::Accelerator::RunQueue::isConcurrentCommandCreation ( ) const

Indique si la création concurrente de plusieurs RunCommand est autorisée.

Définition à la ligne 383 du fichier RunQueue.cc.

◆ isNull()

◆ memoryRessource()

eMemoryRessource Arcane::Accelerator::RunQueue::memoryRessource ( ) const

Ressource mémoire utilisée pour les allocations avec cette instance.

Définition à la ligne 360 du fichier RunQueue.cc.

◆ operator=() [1/2]

RunQueue & Arcane::Accelerator::RunQueue::operator= ( const RunQueue x)

Définition à la ligne 116 du fichier RunQueue.cc.

◆ operator=() [2/2]

RunQueue & Arcane::Accelerator::RunQueue::operator= ( RunQueue &&  x)
noexcept

Définition à la ligne 127 du fichier RunQueue.cc.

◆ platformStream()

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*'.

Obsolète:
Utiliser toCudaNativeStream(), toHipNativeStream() ou toSyclNativeStream() à la place

Définition à la ligne 227 du fichier RunQueue.cc.

◆ prefetchMemory()

void Arcane::Accelerator::RunQueue::prefetchMemory ( const MemoryPrefetchArgs args) const

Effectue un préfetching de la mémoire.

Définition à la ligne 246 du fichier RunQueue.cc.

Référencé par Arcane::VariableUtils::prefetchVariableAsync().

◆ recordEvent() [1/2]

void Arcane::Accelerator::RunQueue::recordEvent ( Ref< RunQueueEvent > &  event)

Enregistre l'état de l'instance dans event.

Définition à la ligne 287 du fichier RunQueue.cc.

Références ARCANE_CHECK_POINTER, et recordEvent().

◆ recordEvent() [2/2]

void Arcane::Accelerator::RunQueue::recordEvent ( RunQueueEvent event)

Enregistre l'état de l'instance dans event.

Définition à la ligne 277 du fichier RunQueue.cc.

Référencé par recordEvent().

◆ setAsync()

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.

Précondition
!isNull()

Définition à la ligne 298 du fichier RunQueue.cc.

◆ setConcurrentCommandCreation()

void Arcane::Accelerator::RunQueue::setConcurrentCommandCreation ( bool  v)

Indique si on autorise la création de RunCommand pour cette instance depuis plusieurs threads.

Cela nécessite d'utiliser un verrou (comme std::mutex) et peut dégrader les performances. Le défaut est false.

Cette méthode n'est pas supportée pour les files qui sont associées à des accélérateurs (isAcceleratorPolicy()==true)

Définition à la ligne 371 du fichier RunQueue.cc.

Références ARCANE_FATAL, et isAcceleratorPolicy().

◆ setMemoryRessource()

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.

Voir également
memoryRessource()
allocationOptions()
Précondition
!isNull()

Définition à la ligne 350 du fichier RunQueue.cc.

◆ waitEvent() [1/2]

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 266 du fichier RunQueue.cc.

Références ARCANE_CHECK_POINTER, et waitEvent().

◆ waitEvent() [2/2]

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 256 du fichier RunQueue.cc.

Référencé par waitEvent().

Documentation des fonctions amies et associées

◆ impl::CudaUtils

friend class impl::CudaUtils
friend

Définition à la ligne 61 du fichier core/RunQueue.h.

◆ impl::HipUtils

friend class impl::HipUtils
friend

Définition à la ligne 62 du fichier core/RunQueue.h.

◆ impl::RunCommandLaunchInfo

friend class impl::RunCommandLaunchInfo
friend

Définition à la ligne 57 du fichier core/RunQueue.h.

◆ impl::SyclUtils

friend class impl::SyclUtils
friend

Définition à la ligne 63 du fichier core/RunQueue.h.

◆ makeCommand [1/2]

RunCommand makeCommand ( const RunQueue run_queue)
friend

Créé une commande associée à la file run_queue.

Définition à la ligne 283 du fichier core/RunQueue.h.

◆ makeCommand [2/2]

RunCommand makeCommand ( const RunQueue run_queue)
friend

Créé une commande associée à la file run_queue.

Définition à la ligne 293 du fichier core/RunQueue.h.

◆ NumArrayViewBase

friend class NumArrayViewBase
friend

Définition à la ligne 267 du fichier core/RunQueue.h.

◆ operator!=

bool operator!= ( const RunQueue q1,
const RunQueue q2 
)
friend

Définition à la ligne 238 du fichier core/RunQueue.h.

◆ operator==

bool operator== ( const RunQueue q1,
const RunQueue q2 
)
friend

Définition à la ligne 234 du fichier core/RunQueue.h.

◆ VariableViewBase

friend class VariableViewBase
friend

Définition à la ligne 266 du fichier core/RunQueue.h.


La documentation de cette classe a été générée à partir des fichiers suivants :