Implémentation d'une commande pour accélérateur. Plus de détails...
Graphe de collaboration de Arcane::Accelerator::Impl::RunCommandImpl:Fonctions membres publiques | |
| RunCommandImpl (RunQueueImpl *queue) | |
| RunCommandImpl (const RunCommandImpl &)=delete | |
| RunCommandImpl & | operator= (const RunCommandImpl &)=delete |
| const TraceInfo & | traceInfo () const |
| const String & | kernelName () const |
| void | notifyBeginLaunchKernel () |
| Notification du début d'exécution de la commande. | |
| void | notifyEndLaunchKernel () |
| Notification de la fin de lancement de la commande. | |
| void | notifyEndExecuteKernel () |
| Notification de la fin d'exécution du noyau. | |
| Impl::IReduceMemoryImpl * | getOrCreateReduceMemoryImpl () |
| void | releaseReduceMemoryImpl (ReduceMemoryImpl *p) |
| IRunQueueStream * | internalStream () const |
| RunnerImpl * | runner () const |
| bool | hasActiveReduction () const |
| void | notifyLaunchKernelSyclEvent (void *sycl_event_ptr) |
| Notification du lancement d'un kernel SYCL. | |
Fonctions membres publiques statiques | |
| static RunCommandImpl * | create (RunQueueImpl *r) |
Fonctions membres privées | |
| ReduceMemoryImpl * | _getOrCreateReduceMemoryImpl () |
| void | _freePools () |
| void | _reset () |
| void | _init () |
| IRunQueueEventImpl * | _createEvent () |
| void | _notifyDestroyRunCommand () |
| Méthode appelée quand l'instance RunCommand associée est détruite. | |
Attributs privés | |
| friend | RunCommand |
| friend | RunQueueImpl |
| RunQueueImpl * | m_queue |
| TraceInfo | m_trace_info |
| String | m_kernel_name |
| Int32 | m_nb_thread_per_block = 0 |
| ParallelLoopOptions | m_parallel_loop_options |
| std::stack< ReduceMemoryImpl * > | m_reduce_memory_pool |
| std::set< ReduceMemoryImpl * > | m_active_reduce_memory_list |
| Liste des réductions actives. | |
| bool | m_has_been_launched = false |
| Indique si la commande a été lancée. | |
| bool | m_use_profiling = false |
| Indique si on souhaite le profiling. | |
| bool | m_use_sequential_timer_event = false |
| Indique si on utilise les évènements séquentiels pour calculer le temps d'exécution. | |
| IRunQueueEventImpl * | m_start_event = nullptr |
| Évènements pour le début et la fin de l'exécution. | |
| IRunQueueEventImpl * | m_stop_event = nullptr |
| Évènements pour la fin de l'exécution. | |
| Int64 | m_begin_time = 0 |
| Temps au lancement de la commande. | |
| ForLoopOneExecStat | m_loop_one_exec_stat |
| ForLoopOneExecStat * | m_loop_one_exec_stat_ptr = nullptr |
| const eExecutionPolicy | m_execution_policy = eExecutionPolicy::None |
| Indique si la commande s'exécute sur accélérateur. | |
| const bool | m_use_accelerator = false |
| Indique si la commande s'exécute sur accélérateur. | |
| bool | m_is_allow_reuse_command = false |
| Indique si on autorise à utiliser plusieurs fois la même commande. | |
| bool | m_has_living_run_command = false |
| Indique si une RunCommand a une référence sur cette instance. | |
| bool | m_may_be_put_in_pool = false |
| Indique si on peut remettre la commande dans le pool associé à la RunQueue. | |
| Int32 | m_shared_memory_size = 0 |
| Taille de la mémoire partagée à allouer. | |
| Int32 | m_nb_stride = 1 |
| Nombre de pas de décomposition de la boucle. | |
| Int32 | m_default_nb_stride = 1 |
| Nombre de pas de décomposition par défaut. | |
Implémentation d'une commande pour accélérateur.
Définition à la ligne 39 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
explicit |
Définition à la ligne 40 du fichier RunCommandImpl.cc.
| Arcane::Accelerator::Impl::RunCommandImpl::~RunCommandImpl | ( | ) |
Définition à la ligne 52 du fichier RunCommandImpl.cc.
|
private |
Définition à la ligne 75 du fichier RunCommandImpl.cc.
|
private |
Définition à la ligne 63 du fichier RunCommandImpl.cc.
|
private |
Définition à la ligne 289 du fichier RunCommandImpl.cc.
|
private |
Définition à la ligne 86 du fichier RunCommandImpl.cc.
|
private |
Méthode appelée quand l'instance RunCommand associée est détruite.
Définition à la ligne 312 du fichier RunCommandImpl.cc.
Références m_has_been_launched, et m_may_be_put_in_pool.
|
private |
Définition à la ligne 224 du fichier RunCommandImpl.cc.
|
static |
Définition à la ligne 118 du fichier RunCommandImpl.cc.
| IReduceMemoryImpl * Arcane::Accelerator::Impl::RunCommandImpl::getOrCreateReduceMemoryImpl | ( | ) |
Définition à la ligne 245 du fichier RunCommandImpl.cc.
|
inline |
Définition à la ligne 69 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
| IRunQueueStream * Arcane::Accelerator::Impl::RunCommandImpl::internalStream | ( | ) | const |
Définition à la ligne 271 du fichier RunCommandImpl.cc.
|
inline |
Définition à la ligne 58 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
| void Arcane::Accelerator::Impl::RunCommandImpl::notifyBeginLaunchKernel | ( | ) |
Notification du début d'exécution de la commande.
Définition à la ligne 131 du fichier RunCommandImpl.cc.
Références ARCCORE_FATAL, Arcane::platform::getRealTimeNS(), m_begin_time, m_has_been_launched, m_is_allow_reuse_command, m_start_event, m_use_profiling, et Arcane::Accelerator::Impl::IRunQueueStream::notifyBeginLaunchKernel().
Voici le graphe d'appel pour cette fonction :| void Arcane::Accelerator::Impl::RunCommandImpl::notifyEndExecuteKernel | ( | ) |
Notification de la fin d'exécution du noyau.
Après cet appel, on est sur que la commande a fini de s'exécuter et on peut la recycler. En asynchrone, cette méthode est appelée lors de la synchronisation d'une file.
Définition à la ligne 199 du fichier RunCommandImpl.cc.
Références Arcane::ProfilingRegistry::_threadLocalForLoopInstance(), m_begin_time, m_has_been_launched, m_start_event, m_stop_event, m_use_profiling, et Arcane::ForLoopOneExecStat::setEndTime().
Voici le graphe d'appel pour cette fonction :| void Arcane::Accelerator::Impl::RunCommandImpl::notifyEndLaunchKernel | ( | ) |
Notification de la fin de lancement de la commande.
La commande continue à s'exécuter en tâche de fond.
Définition à la ligne 159 du fichier RunCommandImpl.cc.
Références m_stop_event, m_use_profiling, et Arcane::Accelerator::Impl::IRunQueueStream::notifyEndLaunchKernel().
Voici le graphe d'appel pour cette fonction :| void Arcane::Accelerator::Impl::RunCommandImpl::notifyLaunchKernelSyclEvent | ( | void * | sycl_event_ptr | ) |
Notification du lancement d'un kernel SYCL.
sycl_event_ptr est de type sycl::event* et contient l'évènement associé à la commande qui est retourné lors des appels à sycl::queue::submit().
Définition à la ligne 179 du fichier RunCommandImpl.cc.
Références Arcane::Accelerator::Impl::IRunQueueStream::_setSyclLastCommandEvent(), et m_start_event.
Voici le graphe d'appel pour cette fonction :| void Arcane::Accelerator::Impl::RunCommandImpl::releaseReduceMemoryImpl | ( | ReduceMemoryImpl * | p | ) |
Définition à la ligne 258 du fichier RunCommandImpl.cc.
| RunnerImpl * Arcane::Accelerator::Impl::RunCommandImpl::runner | ( | ) | const |
Définition à la ligne 280 du fichier RunCommandImpl.cc.
|
inline |
Définition à la ligne 57 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
private |
Liste des réductions actives.
Définition à la ligne 94 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
private |
Temps au lancement de la commande.
Définition à la ligne 111 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
Référencé par notifyBeginLaunchKernel(), et notifyEndExecuteKernel().
|
private |
Nombre de pas de décomposition par défaut.
Définition à la ligne 144 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
private |
Indique si la commande s'exécute sur accélérateur.
Définition à la ligne 117 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
private |
Indique si la commande a été lancée.
Définition à la ligne 97 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
Référencé par _notifyDestroyRunCommand(), notifyBeginLaunchKernel(), et notifyEndExecuteKernel().
|
private |
Indique si une RunCommand a une référence sur cette instance.
Définition à la ligne 132 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
Référencé par Arcane::Accelerator::Impl::RunQueueImpl::_checkPutCommandInPoolNoLock().
|
private |
Indique si on autorise à utiliser plusieurs fois la même commande.
Normalement cela est interdit mais avant novembre 2024, il n'y avait pas de mécanisme pour détecter cela. On peut donc temporairement autoriser cela et dans un on supprimera cette possibilité.
Définition à la ligne 129 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
Référencé par notifyBeginLaunchKernel().
|
private |
Définition à la ligne 83 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
private |
Définition à la ligne 113 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
private |
Définition à la ligne 114 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
private |
Indique si on peut remettre la commande dans le pool associé à la RunQueue.
Définition à la ligne 135 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
Référencé par Arcane::Accelerator::Impl::RunQueueImpl::_checkPutCommandInPoolNoLock(), et _notifyDestroyRunCommand().
|
private |
Nombre de pas de décomposition de la boucle.
Définition à la ligne 141 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
private |
Définition à la ligne 84 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
private |
Définition à la ligne 85 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
private |
Définition à la ligne 81 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
private |
Définition à la ligne 91 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
private |
Taille de la mémoire partagée à allouer.
Définition à la ligne 138 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
private |
Évènements pour le début et la fin de l'exécution.
Définition à la ligne 106 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
Référencé par notifyBeginLaunchKernel(), notifyEndExecuteKernel(), et notifyLaunchKernelSyclEvent().
|
private |
Évènements pour la fin de l'exécution.
Définition à la ligne 108 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
Référencé par notifyEndExecuteKernel(), et notifyEndLaunchKernel().
|
private |
Définition à la ligne 82 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
private |
Indique si la commande s'exécute sur accélérateur.
Définition à la ligne 120 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
private |
Indique si on souhaite le profiling.
Définition à la ligne 100 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
Référencé par notifyBeginLaunchKernel(), notifyEndExecuteKernel(), et notifyEndLaunchKernel().
|
private |
Indique si on utilise les évènements séquentiels pour calculer le temps d'exécution.
Définition à la ligne 103 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
private |
Définition à la ligne 41 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.
|
private |
Définition à la ligne 42 du fichier arccore/src/common/arccore/common/accelerator/internal/RunCommandImpl.h.