Arcane  v3.15.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::Accelerator::impl::RunQueueImpl

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

#include <arcane/accelerator/core/internal/RunQueueImpl.h>

+ 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
 
RunQueueImploperator= (const RunQueueImpl &)=delete
 
RunQueueImploperator= (RunQueueImpl &&)=delete
 
eExecutionPolicy executionPolicy () const
 
RunnerImplrunner () 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 RunQueueImplcreate (RunnerImpl *r, const RunQueueBuildInfo &bi)
 
static RunQueueImplcreate (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

RunnerImplm_runner_impl = nullptr
 
eExecutionPolicy m_execution_policy = eExecutionPolicy::None
 
IRunnerRuntimem_runtime = nullptr
 
IRunQueueStreamm_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< Int32m_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
 

Description détaillée

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.

Documentation des constructeurs et destructeur

◆ RunQueueImpl()

Arcane::Accelerator::impl::RunQueueImpl::RunQueueImpl ( RunnerImpl runner_impl,
Int32  id,
const RunQueueBuildInfo bi 
)
private

Définition à la ligne 71 du fichier RunQueueImpl.cc.

◆ ~RunQueueImpl()

Arcane::Accelerator::impl::RunQueueImpl::~RunQueueImpl ( )
private

Définition à la ligne 84 du fichier RunQueueImpl.cc.

Documentation des fonctions membres

◆ _addRunningCommand()

void Arcane::Accelerator::impl::RunQueueImpl::_addRunningCommand ( RunCommandImpl p)
private

Définition à la ligne 326 du fichier RunQueueImpl.cc.

◆ _checkPutCommandInPoolNoLock()

void Arcane::Accelerator::impl::RunQueueImpl::_checkPutCommandInPoolNoLock ( RunCommandImpl p)
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().

◆ _destroy()

void Arcane::Accelerator::impl::RunQueueImpl::_destroy ( RunQueueImpl q)
staticprivate

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

◆ _freeCommandsInPool()

void Arcane::Accelerator::impl::RunQueueImpl::_freeCommandsInPool ( )
private

Définition à la ligne 96 du fichier RunQueueImpl.cc.

◆ _internalBarrier()

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

◆ _internalCreateOrGetRunCommandImpl()

RunCommandImpl * Arcane::Accelerator::impl::RunQueueImpl::_internalCreateOrGetRunCommandImpl ( )
private

Définition à la ligne 242 du fichier RunQueueImpl.cc.

◆ _internalFreeRunningCommands()

void Arcane::Accelerator::impl::RunQueueImpl::_internalFreeRunningCommands ( )
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().

◆ _internalRuntime()

IRunnerRuntime * Arcane::Accelerator::impl::RunQueueImpl::_internalRuntime ( ) const
inline

Définition à la ligne 92 du fichier core/internal/RunQueueImpl.h.

◆ _internalStream()

IRunQueueStream * Arcane::Accelerator::impl::RunQueueImpl::_internalStream ( ) const
inline

Définition à la ligne 93 du fichier core/internal/RunQueueImpl.h.

◆ _isInPool()

bool Arcane::Accelerator::impl::RunQueueImpl::_isInPool ( ) const
inlineprivate

Définition à la ligne 112 du fichier core/internal/RunQueueImpl.h.

◆ _putInCommandPool()

void Arcane::Accelerator::impl::RunQueueImpl::_putInCommandPool ( RunCommandImpl p)
private

Définition à la ligne 336 du fichier RunQueueImpl.cc.

◆ _release()

void Arcane::Accelerator::impl::RunQueueImpl::_release ( )
private

Définition à la ligne 129 du fichier RunQueueImpl.cc.

◆ _reset()

RunQueueImpl * Arcane::Accelerator::impl::RunQueueImpl::_reset ( RunQueueImpl p)
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.

◆ _setDefaultMemoryRessource()

void Arcane::Accelerator::impl::RunQueueImpl::_setDefaultMemoryRessource ( )
private

Définition à la ligne 154 du fichier RunQueueImpl.cc.

◆ addRef()

void Arcane::Accelerator::impl::RunQueueImpl::addRef ( )
inline

Définition à la ligne 97 du fichier core/internal/RunQueueImpl.h.

◆ allocationOptions()

MemoryAllocationOptions Arcane::Accelerator::impl::RunQueueImpl::allocationOptions ( ) const

Définition à la ligne 165 du fichier RunQueueImpl.cc.

◆ copyMemory()

void Arcane::Accelerator::impl::RunQueueImpl::copyMemory ( const MemoryCopyArgs args) const

Définition à la ligne 186 du fichier RunQueueImpl.cc.

◆ create() [1/2]

RunQueueImpl * Arcane::Accelerator::impl::RunQueueImpl::create ( RunnerImpl r)
static

Définition à la ligne 224 du fichier RunQueueImpl.cc.

◆ create() [2/2]

RunQueueImpl * Arcane::Accelerator::impl::RunQueueImpl::create ( RunnerImpl r,
const RunQueueBuildInfo bi 
)
static

Définition à la ligne 233 du fichier RunQueueImpl.cc.

◆ dumpStats()

void Arcane::Accelerator::impl::RunQueueImpl::dumpStats ( std::ostream &  ostr) const

Définition à la ligne 386 du fichier RunQueueImpl.cc.

◆ executionPolicy()

eExecutionPolicy Arcane::Accelerator::impl::RunQueueImpl::executionPolicy ( ) const
inline

Définition à la ligne 74 du fichier core/internal/RunQueueImpl.h.

◆ isAsync()

bool Arcane::Accelerator::impl::RunQueueImpl::isAsync ( ) const
inline

Définition à la ligne 89 du fichier core/internal/RunQueueImpl.h.

◆ isAutoPrefetchCommand()

bool Arcane::Accelerator::impl::RunQueueImpl::isAutoPrefetchCommand ( ) const

Définition à la ligne 177 du fichier RunQueueImpl.cc.

◆ isConcurrentCommandCreation()

bool Arcane::Accelerator::impl::RunQueueImpl::isConcurrentCommandCreation ( ) const
inline

Définition à la ligne 86 du fichier core/internal/RunQueueImpl.h.

◆ prefetchMemory()

void Arcane::Accelerator::impl::RunQueueImpl::prefetchMemory ( const MemoryPrefetchArgs args) const

Définition à la ligne 195 du fichier RunQueueImpl.cc.

◆ recordEvent()

void Arcane::Accelerator::impl::RunQueueImpl::recordEvent ( RunQueueEvent event)

Définition à la ligne 204 du fichier RunQueueImpl.cc.

◆ removeRef()

void Arcane::Accelerator::impl::RunQueueImpl::removeRef ( )
inline

Définition à la ligne 101 du fichier core/internal/RunQueueImpl.h.

◆ runner()

RunnerImpl * Arcane::Accelerator::impl::RunQueueImpl::runner ( ) const
inline

Définition à la ligne 75 du fichier core/internal/RunQueueImpl.h.

◆ setConcurrentCommandCreation()

void Arcane::Accelerator::impl::RunQueueImpl::setConcurrentCommandCreation ( bool  v)

Définition à la ligne 375 du fichier RunQueueImpl.cc.

◆ waitEvent()

void Arcane::Accelerator::impl::RunQueueImpl::waitEvent ( RunQueueEvent event)

Définition à la ligne 214 du fichier RunQueueImpl.cc.

Documentation des fonctions amies et associées

◆ Arcane::Accelerator::Runner

Définition à la ligne 43 du fichier core/internal/RunQueueImpl.h.

◆ Arcane::Accelerator::RunQueue

Définition à la ligne 44 du fichier core/internal/RunQueueImpl.h.

◆ RunCommandImpl

Définition à la ligne 45 du fichier core/internal/RunQueueImpl.h.

◆ RunnerImpl

Définition à la ligne 47 du fichier core/internal/RunQueueImpl.h.

◆ RunQueueImplStack

Définition à la ligne 46 du fichier core/internal/RunQueueImpl.h.

Documentation des données membres

◆ m_active_run_command_list

UniqueArray<RunCommandImpl*> Arcane::Accelerator::impl::RunQueueImpl::m_active_run_command_list
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().

◆ m_execution_policy

eExecutionPolicy Arcane::Accelerator::impl::RunQueueImpl::m_execution_policy = eExecutionPolicy::None
private

Définition à la ligne 125 du fichier core/internal/RunQueueImpl.h.

◆ m_id

Int32 Arcane::Accelerator::impl::RunQueueImpl::m_id = 0
private

Identifiant de la file.

Définition à la ligne 133 du fichier core/internal/RunQueueImpl.h.

◆ m_is_async

bool Arcane::Accelerator::impl::RunQueueImpl::m_is_async = false
private

Indique si la file est asynchrone.

Définition à la ligne 139 du fichier core/internal/RunQueueImpl.h.

◆ m_is_in_pool

bool Arcane::Accelerator::impl::RunQueueImpl::m_is_in_pool = false
private

Indique si l'instance est dans un pool d'instance.

Définition à la ligne 135 du fichier core/internal/RunQueueImpl.h.

◆ m_memory_ressource

eMemoryRessource Arcane::Accelerator::impl::RunQueueImpl::m_memory_ressource = eMemoryRessource::Unknown
private

Ressource mémoire par défaut.

Définition à la ligne 141 du fichier core/internal/RunQueueImpl.h.

◆ m_nb_ref

std::atomic<Int32> Arcane::Accelerator::impl::RunQueueImpl::m_nb_ref = 0
private

Nombre de références sur l'instance.

Définition à la ligne 137 du fichier core/internal/RunQueueImpl.h.

◆ m_pool_mutex

std::unique_ptr<std::mutex> Arcane::Accelerator::impl::RunQueueImpl::m_pool_mutex
private

Définition à la ligne 144 du fichier core/internal/RunQueueImpl.h.

◆ m_queue_stream

IRunQueueStream* Arcane::Accelerator::impl::RunQueueImpl::m_queue_stream = nullptr
private

Définition à la ligne 127 du fichier core/internal/RunQueueImpl.h.

◆ m_run_command_pool

std::stack<RunCommandImpl*> Arcane::Accelerator::impl::RunQueueImpl::m_run_command_pool
private

Pool de commandes.

Définition à la ligne 129 du fichier core/internal/RunQueueImpl.h.

Référencé par _checkPutCommandInPoolNoLock().

◆ m_runner_impl

RunnerImpl* Arcane::Accelerator::impl::RunQueueImpl::m_runner_impl = nullptr
private

Définition à la ligne 124 du fichier core/internal/RunQueueImpl.h.

◆ m_runtime

IRunnerRuntime* Arcane::Accelerator::impl::RunQueueImpl::m_runtime = nullptr
private

Définition à la ligne 126 du fichier core/internal/RunQueueImpl.h.

◆ m_use_pool_mutex

bool Arcane::Accelerator::impl::RunQueueImpl::m_use_pool_mutex = false
private

Définition à la ligne 145 du fichier core/internal/RunQueueImpl.h.


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