File d'exécution pour accélérateur. Plus de détails...
Graphe de collaboration de Arcane::Accelerator::impl::RunQueueImpl:Classes | |
| class | Lock |
| Verrou pour le pool de RunCommand en multi-thread. Plus de détails... | |
Fonctions membres publiques | |
| RunQueueImpl (const RunQueueImpl &)=delete | |
| RunQueueImpl (RunQueueImpl &&)=delete | |
| RunQueueImpl & | operator= (const RunQueueImpl &)=delete |
| RunQueueImpl & | operator= (RunQueueImpl &&)=delete |
| eExecutionPolicy | executionPolicy () const |
| RunnerImpl * | runner () const |
| MemoryAllocationOptions | allocationOptions () const |
| bool | isAutoPrefetchCommand () const |
| void | copyMemory (const MemoryCopyArgs &args) const |
| void | prefetchMemory (const MemoryPrefetchArgs &args) const |
| void | recordEvent (RunQueueEvent &event) |
| void | waitEvent (RunQueueEvent &event) |
| void | setConcurrentCommandCreation (bool v) |
| bool | isConcurrentCommandCreation () const |
| void | dumpStats (std::ostream &ostr) const |
| bool | isAsync () const |
| void | _internalBarrier () |
| Bloque jusqu'à ce que toutes les commandes soient terminées. | |
| IRunnerRuntime * | _internalRuntime () const |
| IRunQueueStream * | _internalStream () const |
| void | addRef () |
| void | removeRef () |
Fonctions membres publiques statiques | |
| static RunQueueImpl * | create (RunnerImpl *r, const RunQueueBuildInfo &bi) |
| static RunQueueImpl * | create (RunnerImpl *r) |
Fonctions membres privées | |
| RunQueueImpl (RunnerImpl *runner_impl, Int32 id, const RunQueueBuildInfo &bi) | |
| RunCommandImpl * | _internalCreateOrGetRunCommandImpl () |
| void | _internalFreeRunningCommands () |
| Libère les commandes en cours d'exécution. | |
| bool | _isInPool () const |
| void | _release () |
| void | _setDefaultMemoryRessource () |
| void | _addRunningCommand (RunCommandImpl *p) |
| void | _putInCommandPool (RunCommandImpl *p) |
| void | _freeCommandsInPool () |
| void | _checkPutCommandInPoolNoLock (RunCommandImpl *p) |
| Remet la commande dans le pool si possible. | |
Fonctions membres privées statiques | |
| static RunQueueImpl * | _reset (RunQueueImpl *p) |
| Réinitialise l'implémentation. | |
| static void | _destroy (RunQueueImpl *q) |
Attributs privés | |
| RunnerImpl * | m_runner_impl = nullptr |
| eExecutionPolicy | m_execution_policy = eExecutionPolicy::None |
| IRunnerRuntime * | m_runtime = nullptr |
| IRunQueueStream * | m_queue_stream = nullptr |
| std::stack< RunCommandImpl * > | m_run_command_pool |
| Pool de commandes. | |
| UniqueArray< RunCommandImpl * > | m_active_run_command_list |
| Liste des commandes en cours d'exécution. | |
| Int32 | m_id = 0 |
| Identifiant de la file. | |
| bool | m_is_in_pool = false |
| Indique si l'instance est dans un pool d'instance. | |
| std::atomic< Int32 > | m_nb_ref = 0 |
| Nombre de références sur l'instance. | |
| bool | m_is_async = false |
| Indique si la file est asynchrone. | |
| eMemoryResource | m_memory_ressource = eMemoryResource::Unknown |
| Ressource mémoire par défaut. | |
| std::unique_ptr< std::mutex > | m_pool_mutex |
| bool | m_use_pool_mutex = false |
Amis | |
| class | Arcane::Accelerator::Runner |
| class | Arcane::Accelerator::RunQueue |
| class | RunCommandImpl |
| class | RunQueueImplStack |
| class | RunnerImpl |
File d'exécution pour accélérateur.
Cette classe gère l'implémentation d'une RunQueue. La description des méthodes se trouve dans RunQueue.
Définition à la ligne 40 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
private |
Définition à la ligne 71 du fichier RunQueueImpl.cc.
|
private |
Définition à la ligne 84 du fichier RunQueueImpl.cc.
|
private |
Définition à la ligne 326 du fichier RunQueueImpl.cc.
|
private |
Remet la commande dans le pool si possible.
On ne remet pas la commande dans le pool tant qu'il y a une RunCommand qui y fait référence. Dans ce cas la commande sera remise dans le pool lors de l'appel au destructeur de RunCommand. Cela est nécessaire pour gérer le cas où une RunCommand est créée mais n'est jamais utilisée car dans ce cas elle ne sera jamais dans m_active_run_command_list et ne sera pas traitée lors de l'appel à _internalFreeRunningCommands().
Définition à la ligne 314 du fichier RunQueueImpl.cc.
Références Arcane::Accelerator::impl::RunCommandImpl::m_has_living_run_command, Arcane::Accelerator::impl::RunCommandImpl::m_may_be_put_in_pool, et m_run_command_pool.
Référencé par _internalFreeRunningCommands().
Voici le graphe des appelants de cette fonction :
|
staticprivate |
Définition à la ligne 116 du fichier RunQueueImpl.cc.
|
private |
Définition à la ligne 96 du fichier RunQueueImpl.cc.
| void Arcane::Accelerator::impl::RunQueueImpl::_internalBarrier | ( | ) |
Bloque jusqu'à ce que toutes les commandes soient terminées.
Définition à la ligne 348 du fichier RunQueueImpl.cc.
Références _internalFreeRunningCommands().
Voici le graphe d'appel pour cette fonction :
|
private |
Définition à la ligne 242 du fichier RunQueueImpl.cc.
|
private |
Libère les commandes en cours d'exécution.
Cette méthode est en général appelée après une barrière ce qui garantit que les commandes asynchrones sont terminées.
Définition à la ligne 269 du fichier RunQueueImpl.cc.
Références _checkPutCommandInPoolNoLock(), Arcane::Array< DataType >::add(), et m_active_run_command_list.
Référencé par _internalBarrier().
Voici le graphe d'appel pour cette fonction :
Voici le graphe des appelants de cette fonction :
|
inline |
Définition à la ligne 91 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
inline |
Définition à la ligne 92 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
inlineprivate |
Définition à la ligne 111 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
private |
Définition à la ligne 336 du fichier RunQueueImpl.cc.
|
private |
Définition à la ligne 129 du fichier RunQueueImpl.cc.
|
staticprivate |
Réinitialise l'implémentation.
Cette méthode est appelée lorsqu'on va initialiser une RunQueue avec cette instance. Il faut dans ce cas réinitialiser les valeurs de l'instance qui dépendent de l'état actuel.
Définition à la ligne 364 du fichier RunQueueImpl.cc.
Références m_is_async.
|
private |
Définition à la ligne 154 du fichier RunQueueImpl.cc.
|
inline |
Définition à la ligne 96 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
| MemoryAllocationOptions Arcane::Accelerator::impl::RunQueueImpl::allocationOptions | ( | ) | const |
Définition à la ligne 165 du fichier RunQueueImpl.cc.
| void Arcane::Accelerator::impl::RunQueueImpl::copyMemory | ( | const MemoryCopyArgs & | args | ) | const |
Définition à la ligne 186 du fichier RunQueueImpl.cc.
|
static |
Définition à la ligne 224 du fichier RunQueueImpl.cc.
|
static |
Définition à la ligne 233 du fichier RunQueueImpl.cc.
| void Arcane::Accelerator::impl::RunQueueImpl::dumpStats | ( | std::ostream & | ostr | ) | const |
Définition à la ligne 386 du fichier RunQueueImpl.cc.
|
inline |
Définition à la ligne 73 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
inline |
Définition à la ligne 88 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
| bool Arcane::Accelerator::impl::RunQueueImpl::isAutoPrefetchCommand | ( | ) | const |
Définition à la ligne 177 du fichier RunQueueImpl.cc.
|
inline |
Définition à la ligne 85 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
| void Arcane::Accelerator::impl::RunQueueImpl::prefetchMemory | ( | const MemoryPrefetchArgs & | args | ) | const |
Définition à la ligne 195 du fichier RunQueueImpl.cc.
| void Arcane::Accelerator::impl::RunQueueImpl::recordEvent | ( | RunQueueEvent & | event | ) |
Définition à la ligne 204 du fichier RunQueueImpl.cc.
|
inline |
Définition à la ligne 100 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
inline |
Définition à la ligne 74 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
| void Arcane::Accelerator::impl::RunQueueImpl::setConcurrentCommandCreation | ( | bool | v | ) |
Définition à la ligne 375 du fichier RunQueueImpl.cc.
| void Arcane::Accelerator::impl::RunQueueImpl::waitEvent | ( | RunQueueEvent & | event | ) |
Définition à la ligne 214 du fichier RunQueueImpl.cc.
|
friend |
Définition à la ligne 42 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
friend |
Définition à la ligne 43 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
friend |
Définition à la ligne 44 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
friend |
Définition à la ligne 46 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
friend |
Définition à la ligne 45 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
private |
Liste des commandes en cours d'exécution.
Définition à la ligne 130 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
Référencé par _internalFreeRunningCommands().
|
private |
Définition à la ligne 124 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
private |
Identifiant de la file.
Définition à la ligne 132 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
private |
Indique si la file est asynchrone.
Définition à la ligne 138 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
Référencé par _reset().
|
private |
Indique si l'instance est dans un pool d'instance.
Définition à la ligne 134 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
private |
Ressource mémoire par défaut.
Définition à la ligne 140 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
private |
Nombre de références sur l'instance.
Définition à la ligne 136 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
private |
Définition à la ligne 143 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
private |
Définition à la ligne 126 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
private |
Pool de commandes.
Définition à la ligne 128 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
Référencé par _checkPutCommandInPoolNoLock().
|
private |
Définition à la ligne 123 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
private |
Définition à la ligne 125 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.
|
private |
Définition à la ligne 144 du fichier arccore/src/common/arccore/common/accelerator/internal/RunQueueImpl.h.