Implémentation d'une commande pour accélérateur. Plus de détails...
#include <arcane/accelerator/core/internal/RunCommandImpl.h>
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 |
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 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. | |
Implémentation d'une commande pour accélérateur.
Définition à la ligne 38 du fichier internal/RunCommandImpl.h.
|
explicit |
Définition à la ligne 42 du fichier RunCommandImpl.cc.
Arcane::Accelerator::impl::RunCommandImpl::~RunCommandImpl | ( | ) |
Définition à la ligne 53 du fichier RunCommandImpl.cc.
|
private |
Définition à la ligne 76 du fichier RunCommandImpl.cc.
|
private |
Définition à la ligne 64 du fichier RunCommandImpl.cc.
|
private |
Définition à la ligne 280 du fichier RunCommandImpl.cc.
|
private |
Définition à la ligne 87 du fichier RunCommandImpl.cc.
|
private |
Méthode appelée quand l'instance RunCommand associée est détruite.
Définition à la ligne 303 du fichier RunCommandImpl.cc.
|
private |
Définition à la ligne 217 du fichier RunCommandImpl.cc.
|
static |
Définition à la ligne 111 du fichier RunCommandImpl.cc.
IReduceMemoryImpl * Arcane::Accelerator::impl::RunCommandImpl::getOrCreateReduceMemoryImpl | ( | ) |
Définition à la ligne 236 du fichier RunCommandImpl.cc.
IRunQueueStream * Arcane::Accelerator::impl::RunCommandImpl::internalStream | ( | ) | const |
Définition à la ligne 262 du fichier RunCommandImpl.cc.
|
inline |
Définition à la ligne 57 du fichier internal/RunCommandImpl.h.
void Arcane::Accelerator::impl::RunCommandImpl::notifyBeginLaunchKernel | ( | ) |
Notification du début d'exécution de la commande.
Définition à la ligne 124 du fichier RunCommandImpl.cc.
Références ARCANE_FATAL, et Arcane::Accelerator::impl::IRunQueueStream::notifyBeginLaunchKernel().
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 192 du fichier RunCommandImpl.cc.
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 152 du fichier RunCommandImpl.cc.
Références Arcane::Accelerator::impl::IRunQueueStream::notifyEndLaunchKernel().
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 172 du fichier RunCommandImpl.cc.
Références Arcane::Accelerator::impl::IRunQueueStream::_setSyclLastCommandEvent().
void Arcane::Accelerator::impl::RunCommandImpl::releaseReduceMemoryImpl | ( | ReduceMemoryImpl * | p | ) |
Définition à la ligne 249 du fichier RunCommandImpl.cc.
RunnerImpl * Arcane::Accelerator::impl::RunCommandImpl::runner | ( | ) | const |
Définition à la ligne 271 du fichier RunCommandImpl.cc.
|
inline |
Définition à la ligne 56 du fichier internal/RunCommandImpl.h.
|
private |
Liste des réductions actives.
Définition à la ligne 92 du fichier internal/RunCommandImpl.h.
|
private |
Temps au lancement de la commande.
Définition à la ligne 109 du fichier internal/RunCommandImpl.h.
Indique si la commande a été lancée.
Définition à la ligne 95 du fichier internal/RunCommandImpl.h.
Indique si une RunCommand a une référence sur cette instance.
Définition à la ligne 127 du fichier internal/RunCommandImpl.h.
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 124 du fichier internal/RunCommandImpl.h.
|
private |
Définition à la ligne 81 du fichier internal/RunCommandImpl.h.
|
private |
Définition à la ligne 111 du fichier internal/RunCommandImpl.h.
|
private |
Définition à la ligne 112 du fichier internal/RunCommandImpl.h.
Indique si on peut remettre la commande dans le pool associé à la RunQueue.
Définition à la ligne 130 du fichier internal/RunCommandImpl.h.
|
private |
Définition à la ligne 82 du fichier internal/RunCommandImpl.h.
|
private |
Définition à la ligne 83 du fichier internal/RunCommandImpl.h.
|
private |
Définition à la ligne 79 du fichier internal/RunCommandImpl.h.
|
private |
Définition à la ligne 89 du fichier internal/RunCommandImpl.h.
|
private |
Évènements pour le début et la fin de l'exécution.
Définition à la ligne 104 du fichier internal/RunCommandImpl.h.
|
private |
Évènements pour la fin de l'exécution.
Définition à la ligne 106 du fichier internal/RunCommandImpl.h.
|
private |
Définition à la ligne 80 du fichier internal/RunCommandImpl.h.
Indique si la commande s'exécute sur accélérateur.
Définition à la ligne 115 du fichier internal/RunCommandImpl.h.
Indique si on souhaite le profiling.
Définition à la ligne 98 du fichier internal/RunCommandImpl.h.
Indique si on utilise les évènements séquentiels pour calculer le temps d'exécution.
Définition à la ligne 101 du fichier internal/RunCommandImpl.h.
|
private |
Définition à la ligne 40 du fichier internal/RunCommandImpl.h.
|
private |
Définition à la ligne 41 du fichier internal/RunCommandImpl.h.