Arcane  v3.14.10.0
Documentation développeur
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.
 
 ARCANE_DEPRECATED_REASON ("Y2024: Use toCudaNativeStream(), toHipNativeStream() or toSyclNativeStream() instead") void *platformStream() const
 Pointeur sur la structure interne dépendante de l'implémentation.
 
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.
 

Fonctions membres privées

 RunQueue (const Runner &runner, bool)
 
 RunQueue (const Runner &runner, const RunQueueBuildInfo &bi, bool)
 Créé une file associée à runner avec les paramètres bi.
 
 RunQueue (impl::RunQueueImpl *p)
 
impl::IRunnerRuntime_internalRuntime () const
 
impl::IRunQueueStream_internalStream () const
 
impl::RunCommandImpl_getCommandImpl () const
 
impl::RunQueueImpl_internalImpl () const
 
void _checkNotNull () const
 

Attributs privés

friend RunCommand
 
friend ProfileRegion
 
friend Runner
 
friend ViewBuildInfo
 
AutoRef2< impl::RunQueueImplm_p
 

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.
 

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/8]

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

Créé une file nulle.

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

◆ ~RunQueue()

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

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

◆ RunQueue() [2/8]

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

◆ RunQueue() [3/8]

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.

◆ RunQueue() [4/8]

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

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

◆ RunQueue() [5/8]

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

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

◆ RunQueue() [6/8]

Arcane::Accelerator::RunQueue::RunQueue ( const Runner runner,
bool   
)
private

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

◆ RunQueue() [7/8]

Arcane::Accelerator::RunQueue::RunQueue ( const Runner runner,
const RunQueueBuildInfo bi,
bool   
)
private

Créé une file associée à runner avec les paramètres bi.

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

◆ RunQueue() [8/8]

Arcane::Accelerator::RunQueue::RunQueue ( impl::RunQueueImpl p)
explicitprivate

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

Documentation des fonctions membres

◆ _checkNotNull()

void Arcane::Accelerator::RunQueue::_checkNotNull ( ) const
private

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

◆ _getCommandImpl()

impl::RunCommandImpl * Arcane::Accelerator::RunQueue::_getCommandImpl ( ) const
private

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

◆ _internalImpl()

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

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

◆ _internalRuntime()

impl::IRunnerRuntime * Arcane::Accelerator::RunQueue::_internalRuntime ( ) const
private

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

◆ _internalStream()

impl::IRunQueueStream * Arcane::Accelerator::RunQueue::_internalStream ( ) const
private

Définition à la ligne 188 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 301 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 332 du fichier RunQueue.cc.

Référencé par Arcane::Materials::MeshMaterialVariableSynchronizer::_fillCellsAccelerator(), et Arcane::Materials::MeshMaterialVariableSynchronizer::recompute().

◆ ARCANE_DEPRECATED_REASON()

Arcane::Accelerator::RunQueue::ARCANE_DEPRECATED_REASON ( "Y2024: Use   toCudaNativeStream(),
toHipNativeStream() or toSyclNativeStream() instead"   
) 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

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

Référencé par Arcane::Materials::IncrementalComponentModifier::_resizeVariablesIndexer(), Arcane::DirectBufferCopier::barrier(), et Arcane::Materials::AcceleratorMeshMaterialSynchronizerImpl::synchronizeMaterialsInCells().

◆ copyMemory()

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.

Référencé par Arcane::Accelerator::Cuda::CudaMemoryCopier::copy(), Arcane::Accelerator::Hip::HipMemoryCopier::copy(), et Arcane::Accelerator::Sycl::SyclMemoryCopier::copy().

◆ executionPolicy()

◆ isAcceleratorPolicy()

◆ isAsync()

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

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

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

Référencé par Arcane::Accelerator::Cuda::CudaMemoryCopier::copy(), Arcane::Accelerator::Hip::HipMemoryCopier::copy(), et Arcane::Accelerator::Sycl::SyclMemoryCopier::copy().

◆ isNull()

◆ memoryRessource()

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.

◆ operator=() [1/2]

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

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

◆ operator=() [2/2]

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

Définition à la ligne 126 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 239 du fichier RunQueue.cc.

◆ recordEvent() [1/2]

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().

◆ recordEvent() [2/2]

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().

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

Référencé par Arcane::Materials::AcceleratorMeshMaterialSynchronizerImpl::synchronizeMaterialsInCells().

◆ 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 343 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 259 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 249 du fichier RunQueue.cc.

Référencé par waitEvent().

Documentation des fonctions amies et associées

◆ impl::RunCommandLaunchInfo

Définition à la ligne 57 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 248 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 258 du fichier core/RunQueue.h.

◆ NumArrayViewBase

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

◆ VariableViewBase

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

Documentation des données membres

◆ m_p

AutoRef2<impl::RunQueueImpl> Arcane::Accelerator::RunQueue::m_p
private

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

◆ ProfileRegion

friend Arcane::Accelerator::RunQueue::ProfileRegion
private

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

◆ RunCommand

friend Arcane::Accelerator::RunQueue::RunCommand
private

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

◆ Runner

friend Arcane::Accelerator::RunQueue::Runner
private

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

◆ ViewBuildInfo

friend Arcane::Accelerator::RunQueue::ViewBuildInfo
private

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


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