Object temporaire pour conserver les informations d'exécution d'une commande et regrouper les tests. Plus de détails...
#include <arcane/accelerator/core/RunCommandLaunchInfo.h>
Types publics | |
using | ThreadBlockInfo = KernelLaunchArgs |
Fonctions membres publiques | |
RunCommandLaunchInfo (RunCommand &command, Int64 total_loop_size) | |
RunCommandLaunchInfo (const RunCommandLaunchInfo &)=delete | |
RunCommandLaunchInfo | operator= (const RunCommandLaunchInfo &)=delete |
eExecutionPolicy | executionPolicy () const |
void | beginExecute () |
Indique qu'on commence l'exécution de la commande. | |
void | endExecute () |
Signale la fin de l'exécution. | |
KernelLaunchArgs | kernelLaunchArgs () const |
Informations sur le nombre de block/thread/grille du noyau à lancer. | |
ParallelLoopOptions | computeParallelLoopOptions () const |
Calcule et retourne les informations pour les boucles multi-thread. | |
const ForLoopRunInfo & | loopRunInfo () const |
Informations d'exécution de la boucle. | |
Int64 | totalLoopSize () const |
Taille totale de la boucle. | |
Fonctions membres privées | |
KernelLaunchArgs | _threadBlockInfo (const void *func, Int64 shared_memory_size) const |
Informations dynamiques sur le nombre de block/thread/grille du noyau à lancer. | |
NativeStream | _internalNativeStream () |
void | _doEndKernelLaunch () |
KernelLaunchArgs | _computeKernelLaunchArgs () const |
Calcule le nombre de block/thread/grille du noyau en fonction de full_size. | |
void | _computeLoopRunInfo () |
Calcule la valeur de m_loop_run_info. | |
void | _addSyclEvent (void *sycl_event_ptr) |
Attributs privés | |
RunCommand & | m_command |
bool | m_has_exec_begun = false |
bool | m_is_notify_end_kernel_done = false |
eExecutionPolicy | m_exec_policy = eExecutionPolicy::Sequential |
KernelLaunchArgs | m_kernel_launch_args |
ForLoopRunInfo | m_loop_run_info |
Int64 | m_total_loop_size = 0 |
impl::RunQueueImpl * | m_queue_impl = nullptr |
Amis | |
template<typename SyclKernel, typename Lambda, typename LambdaArgs, typename... ReducerArgs> | |
void | _applyKernelSYCL (impl::RunCommandLaunchInfo &launch_info, SyclKernel kernel, Lambda &func, const LambdaArgs &args, const ReducerArgs &... reducer_args) |
template<typename CudaKernel, typename Lambda, typename LambdaArgs, typename... RemainingArgs> | |
void | _applyKernelCUDA (impl::RunCommandLaunchInfo &launch_info, const CudaKernel &kernel, Lambda &func, const LambdaArgs &args, const RemainingArgs &... other_args) |
Fonction générique pour exécuter un kernel CUDA. | |
template<typename HipKernel, typename Lambda, typename LambdaArgs, typename... RemainingArgs> | |
void | _applyKernelHIP (impl::RunCommandLaunchInfo &launch_info, const HipKernel &kernel, const Lambda &func, const LambdaArgs &args, const RemainingArgs &... other_args) |
Fonction générique pour exécuter un kernel HIP. | |
Object temporaire pour conserver les informations d'exécution d'une commande et regrouper les tests.
Définition à la ligne 35 du fichier core/RunCommandLaunchInfo.h.
Définition à la ligne 50 du fichier core/RunCommandLaunchInfo.h.
Arcane::Accelerator::impl::RunCommandLaunchInfo::RunCommandLaunchInfo | ( | RunCommand & | command, |
Int64 | total_loop_size ) |
Définition à la ligne 33 du fichier RunCommandLaunchInfo.cc.
Arcane::Accelerator::impl::RunCommandLaunchInfo::~RunCommandLaunchInfo | ( | ) |
Définition à la ligne 51 du fichier RunCommandLaunchInfo.cc.
|
private |
Définition à la ligne 180 du fichier RunCommandLaunchInfo.cc.
|
private |
Calcule le nombre de block/thread/grille du noyau en fonction de full_size.
Définition à la ligne 119 du fichier RunCommandLaunchInfo.cc.
Références Arcane::CheckedConvert::toInt32().
|
private |
Calcule la valeur de m_loop_run_info.
Cela n'est utile qu'en mode multi-thread.
Définition à la ligne 160 du fichier RunCommandLaunchInfo.cc.
Références computeParallelLoopOptions().
Référencé par beginExecute().
|
private |
Définition à la ligne 92 du fichier RunCommandLaunchInfo.cc.
|
private |
Définition à la ligne 108 du fichier RunCommandLaunchInfo.cc.
|
private |
Informations dynamiques sur le nombre de block/thread/grille du noyau à lancer.
Ces informations sont calculées à partir de méthodes fournies par le runtime accélérateur sous-jacent.
Définition à la ligne 171 du fichier RunCommandLaunchInfo.cc.
Référencé par _applyKernelCUDA, et _applyKernelHIP.
void Arcane::Accelerator::impl::RunCommandLaunchInfo::beginExecute | ( | ) |
Indique qu'on commence l'exécution de la commande.
Doit toujours être appelé avant de lancer la commande pour être sur que cette méthode est appelée en cas d'exception.
Définition à la ligne 62 du fichier RunCommandLaunchInfo.cc.
Références _computeLoopRunInfo(), ARCANE_FATAL, et Arcane::Accelerator::Thread.
Référencé par Arcane::Accelerator::impl::_applyConstituentCells(), Arcane::Accelerator::impl::_applyGenericLoop(), Arcane::Accelerator::impl::_applyItems(), Arcane::Accelerator::impl::GenericFilteringIf::apply(), Arcane::Accelerator::impl::GenericPartitionerIf::apply(), et Arcane::Accelerator::impl::GenericPartitionerIf::apply3().
ParallelLoopOptions Arcane::Accelerator::impl::RunCommandLaunchInfo::computeParallelLoopOptions | ( | ) | const |
Calcule et retourne les informations pour les boucles multi-thread.
Définition à la ligne 133 du fichier RunCommandLaunchInfo.cc.
Références Arcane::ParallelLoopOptions::grainSize(), Arcane::ParallelLoopOptions::maxThread(), Arcane::TaskFactory::nbAllowedThread(), et Arcane::ParallelLoopOptions::setGrainSize().
Référencé par _computeLoopRunInfo().
void Arcane::Accelerator::impl::RunCommandLaunchInfo::endExecute | ( | ) |
Signale la fin de l'exécution.
Notifie de la fin de lancement de la commande.
Si la file associée à la commande est asynchrone, la commande peut continuer à s'exécuter après cet appel.
A noter que si la commande est asynchrone, son exécution peut continuer après l'appel à cette méthode.
Définition à la ligne 81 du fichier RunCommandLaunchInfo.cc.
Références ARCANE_FATAL.
Référencé par Arcane::Accelerator::impl::_applyConstituentCells(), Arcane::Accelerator::impl::_applyGenericLoop(), Arcane::Accelerator::impl::_applyItems(), Arcane::Accelerator::impl::GenericFilteringIf::apply(), Arcane::Accelerator::impl::GenericPartitionerIf::apply(), et Arcane::Accelerator::impl::GenericPartitionerIf::apply3().
|
inline |
Définition à la ligne 61 du fichier core/RunCommandLaunchInfo.h.
|
inline |
Informations sur le nombre de block/thread/grille du noyau à lancer.
Cette valeur n'est valide que pour si la commande est associée à un accélérateur.
Définition à la ligne 84 du fichier core/RunCommandLaunchInfo.h.
|
inline |
Informations d'exécution de la boucle.
Ces informations ne sont valides si executionPolicy()==eExecutionPolicy::Thread et si beginExecute() a été appelé.
Définition à la ligne 95 du fichier core/RunCommandLaunchInfo.h.
Référencé par Arcane::Accelerator::impl::_applyConstituentCells(), Arcane::Accelerator::impl::_applyGenericLoop(), Arcane::Accelerator::impl::_applyItems(), et Arcane::Accelerator::impl::GenericFilteringIf::apply().
|
inline |
Taille totale de la boucle.
Définition à la ligne 98 du fichier core/RunCommandLaunchInfo.h.
|
friend |
Fonction générique pour exécuter un kernel CUDA.
kernel | noyau CUDA |
func | fonction à exécuter par le noyau |
args | arguments de la fonction lambda |
TODO: Tester si Lambda est bien une fonction, le SFINAE étant peu lisible : typename std::enable_if_t<std::is_function_v<std::decay_t<Lambda> > >* = nullptr attendons les concepts c++20 (requires)
Définition à la ligne 313 du fichier KernelLauncher.h.
Références _applyKernelCUDA, et _threadBlockInfo().
Référencé par _applyKernelCUDA.
|
friend |
Fonction générique pour exécuter un kernel HIP.
kernel | noyau HIP |
func | fonction à exécuter par le noyau |
args | arguments de la fonction lambda |
Définition à la ligne 341 du fichier KernelLauncher.h.
Références _applyKernelHIP, et _threadBlockInfo().
Référencé par _applyKernelHIP.
|
private |
Définition à la ligne 102 du fichier core/RunCommandLaunchInfo.h.
|
private |
Définition à la ligne 105 du fichier core/RunCommandLaunchInfo.h.
|
private |
Définition à la ligne 103 du fichier core/RunCommandLaunchInfo.h.
|
private |
Définition à la ligne 104 du fichier core/RunCommandLaunchInfo.h.
|
private |
Définition à la ligne 106 du fichier core/RunCommandLaunchInfo.h.
|
private |
Définition à la ligne 107 du fichier core/RunCommandLaunchInfo.h.
|
private |
Définition à la ligne 109 du fichier core/RunCommandLaunchInfo.h.
|
private |
Définition à la ligne 108 du fichier core/RunCommandLaunchInfo.h.