12#ifndef ARCANE_ACCELERATOR_CORE_RUNCOMMANDLAUNCHINFO_H
13#define ARCANE_ACCELERATOR_CORE_RUNCOMMANDLAUNCHINFO_H
19#include "arcane/accelerator/core/KernelLaunchArgs.h"
24namespace Arcane::Accelerator::impl
34class ARCANE_ACCELERATOR_CORE_EXPORT RunCommandLaunchInfo
37 template <
typename SyclKernel,
typename Lambda,
typename LambdaArgs,
typename... ReducerArgs>
39 const LambdaArgs& args,
const ReducerArgs&... reducer_args);
40 template <
typename CudaKernel,
typename Lambda,
typename LambdaArgs,
typename... RemainingArgs>
42 const LambdaArgs& args, [[maybe_unused]]
const RemainingArgs&... other_args);
43 template <
typename HipKernel,
typename Lambda,
typename LambdaArgs,
typename... RemainingArgs>
45 const LambdaArgs& args, [[maybe_unused]]
const RemainingArgs&... other_args);
54 ~RunCommandLaunchInfo();
55 RunCommandLaunchInfo(
const RunCommandLaunchInfo&) =
delete;
56 RunCommandLaunchInfo operator=(
const RunCommandLaunchInfo&) =
delete;
102 bool m_has_exec_begun =
false;
103 bool m_is_notify_end_kernel_done =
false;
107 Int64 m_total_loop_size = 0;
108 impl::RunQueueImpl* m_queue_impl =
nullptr;
114 void _doEndKernelLaunch();
119 void _computeLoopRunInfo();
123 void _addSyclEvent(
void* sycl_event_ptr);
Classes, Types et macros pour gérer la concurrence.
Gestion d'une commande sur accélérateur.
Type opaque pour encapsuler une 'stream' native.
Int64 totalLoopSize() const
Taille totale de la boucle.
void beginExecute()
Indique qu'on commence l'exécution de la commande.
KernelLaunchArgs kernelLaunchArgs() const
Informations sur le nombre de block/thread/grille du noyau à lancer.
void endExecute()
Signale la fin de l'exécution.
friend 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.
const ForLoopRunInfo & loopRunInfo() const
Informations d'exécution de la boucle.
friend 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.
Informations d'exécution d'une boucle.
Options d'exécution d'une boucle parallèle en multi-thread.
eExecutionPolicy
Politique d'exécution pour un Runner.
@ Sequential
Politique d'exécution séquentielle.
std::int64_t Int64
Type entier signé sur 64 bits.
std::int32_t Int32
Type entier signé sur 32 bits.