File d'exécution pour accélérateur. Plus de détails...
#include <arcane/accelerator/core/internal/RunQueueImpl.h>
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. | |
eMemoryRessource | m_memory_ressource = eMemoryRessource::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 41 du fichier core/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 m_run_command_pool.
Référencé par _internalFreeRunningCommands().
|
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(), et Arcane::Accelerator::impl::IRunQueueStream::barrier().
|
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(), et m_active_run_command_list.
Référencé par _internalBarrier().
|
inline |
Définition à la ligne 92 du fichier core/internal/RunQueueImpl.h.
|
inline |
Définition à la ligne 93 du fichier core/internal/RunQueueImpl.h.
|
inlineprivate |
Définition à la ligne 112 du fichier core/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.
|
private |
Définition à la ligne 154 du fichier RunQueueImpl.cc.
|
inline |
Définition à la ligne 97 du fichier core/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 74 du fichier core/internal/RunQueueImpl.h.
|
inline |
Définition à la ligne 89 du fichier core/internal/RunQueueImpl.h.
bool Arcane::Accelerator::impl::RunQueueImpl::isAutoPrefetchCommand | ( | ) | const |
Définition à la ligne 177 du fichier RunQueueImpl.cc.
|
inline |
Définition à la ligne 86 du fichier core/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 101 du fichier core/internal/RunQueueImpl.h.
|
inline |
Définition à la ligne 75 du fichier core/internal/RunQueueImpl.h.
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.
Définition à la ligne 43 du fichier core/internal/RunQueueImpl.h.
Définition à la ligne 44 du fichier core/internal/RunQueueImpl.h.
|
friend |
Définition à la ligne 45 du fichier core/internal/RunQueueImpl.h.
|
friend |
Définition à la ligne 47 du fichier core/internal/RunQueueImpl.h.
|
friend |
Définition à la ligne 46 du fichier core/internal/RunQueueImpl.h.
|
private |
Liste des commandes en cours d'exécution.
Définition à la ligne 131 du fichier core/internal/RunQueueImpl.h.
Référencé par _internalFreeRunningCommands().
|
private |
Définition à la ligne 125 du fichier core/internal/RunQueueImpl.h.
|
private |
Identifiant de la file.
Définition à la ligne 133 du fichier core/internal/RunQueueImpl.h.
Indique si la file est asynchrone.
Définition à la ligne 139 du fichier core/internal/RunQueueImpl.h.
Indique si l'instance est dans un pool d'instance.
Définition à la ligne 135 du fichier core/internal/RunQueueImpl.h.
|
private |
Ressource mémoire par défaut.
Définition à la ligne 141 du fichier core/internal/RunQueueImpl.h.
|
private |
Nombre de références sur l'instance.
Définition à la ligne 137 du fichier core/internal/RunQueueImpl.h.
|
private |
Définition à la ligne 144 du fichier core/internal/RunQueueImpl.h.
|
private |
Définition à la ligne 127 du fichier core/internal/RunQueueImpl.h.
|
private |
Pool de commandes.
Définition à la ligne 129 du fichier core/internal/RunQueueImpl.h.
Référencé par _checkPutCommandInPoolNoLock().
|
private |
Définition à la ligne 124 du fichier core/internal/RunQueueImpl.h.
|
private |
Définition à la ligne 126 du fichier core/internal/RunQueueImpl.h.
Définition à la ligne 145 du fichier core/internal/RunQueueImpl.h.