14#include "arcane/accelerator/core/AcceleratorRuntimeInitialisationInfo.h"
16#include "arcane/utils/ITraceMng.h"
17#include "arcane/utils/String.h"
18#include "arcane/utils/Property.h"
20#include "arcane/accelerator/core/Runner.h"
21#include "arcane/accelerator/core/DeviceId.h"
36 bool m_is_using_accelerator_runtime =
false;
37 String m_accelerator_runtime;
44template<
typename V>
void AcceleratorRuntimeInitialisationInfo::
45_applyPropertyVisitor(V& p)
48 p << b.addString(
"AcceleratorRuntime")
49 .addDescription(
"Name of the accelerator runtime (currently only 'cuda', 'hip' or 'sycl') to use")
50 .addCommandLineArgument(
"AcceleratorRuntime")
51 .addGetter([](
auto a) {
return a.x.acceleratorRuntime(); })
52 .addSetter([](
auto a) { a.x.setAcceleratorRuntime(a.v); });
58AcceleratorRuntimeInitialisationInfo::
59AcceleratorRuntimeInitialisationInfo()
67AcceleratorRuntimeInitialisationInfo::
68AcceleratorRuntimeInitialisationInfo(
const AcceleratorRuntimeInitialisationInfo& rhs)
69: m_p(new Impl(*rhs.m_p))
76AcceleratorRuntimeInitialisationInfo& AcceleratorRuntimeInitialisationInfo::
77operator=(
const AcceleratorRuntimeInitialisationInfo& rhs)
81 m_p =
new Impl(*(rhs.m_p));
89AcceleratorRuntimeInitialisationInfo::
90~AcceleratorRuntimeInitialisationInfo()
101bool AcceleratorRuntimeInitialisationInfo::
102isUsingAcceleratorRuntime()
const
104 return m_p->m_is_using_accelerator_runtime;
107void AcceleratorRuntimeInitialisationInfo::
108setIsUsingAcceleratorRuntime(
bool v)
110 m_p->m_is_using_accelerator_runtime = v;
116String AcceleratorRuntimeInitialisationInfo::
117acceleratorRuntime()
const
119 return m_p->m_accelerator_runtime;
125 m_p->m_accelerator_runtime = v;
127 setIsUsingAcceleratorRuntime(
true);
136 return m_p->m_device_id;
142 m_p->m_device_id = v;
151 String a = acceleratorRuntime();
168extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT
void
172 using namespace Accelerator;
173 String accelerator_runtime = acc_info.acceleratorRuntime();
177 tm->
info() <<
"AcceleratorRuntime=" << accelerator_runtime;
178 if (impl::isAcceleratorPolicy(policy)){
179 tm->
info() <<
"Using accelerator runtime=" << policy <<
" device=" << acc_info.
deviceId();
184 tm->
info() <<
"Using accelerator runtime=" << policy;
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Classes, Types et macros pour gérer la concurrence.
Informations pour l'initialisation des accélérateurs.
void setAcceleratorRuntime(StringView name)
Nom du runtime utilisé (pour l'instant uniquement 'cuda')
eExecutionPolicy executionPolicy() const
Politique d'exécution associée à acceleratorRuntime()
DeviceId deviceId() const
Device associé au Runner associé
void setDeviceId(DeviceId name)
Positionne le device associé au Runner associé.
Identifiant d'un composant du système.
Gestionnaire d'exécution pour accélérateur.
void initialize(eExecutionPolicy v)
Initialise l'instance. Cette méthode ne doit être appelée qu'une seule fois.
void setAsCurrentDevice()
Positionne le device associé à cette instance comme le device par défaut du contexte.
static bool isActive()
Indique si les tâches sont actives. Les tâches sont actives si une implémentation est disponible et s...
Interface du gestionnaire de traces.
virtual TraceMessage info()=0
Flot pour un message d'information.
Vue sur une chaîne de caractères UTF-8.
constexpr bool empty() const ARCCORE_NOEXCEPT
Vrai si la chaîne est nulle ou vide.
Chaîne de caractères unicode.
bool null() const
Retourne true si la chaîne est nulle.
Espace de nom pour l'utilisation des accélérateurs.
void arcaneInitializeRunner(Accelerator::Runner &runner, ITraceMng *tm, const AcceleratorRuntimeInitialisationInfo &acc_info)
Initialise runner avec les informations de acc_info.
eExecutionPolicy
Politique d'exécution pour un Runner.
@ SYCL
Politique d'exécution utilisant l'environnement SYCL.
@ HIP
Politique d'exécution utilisant l'environnement HIP.
@ None
Aucune politique d'exécution.
@ CUDA
Politique d'exécution utilisant l'environnement CUDA.
@ Sequential
Politique d'exécution séquentielle.
@ Thread
Politique d'exécution multi-thread.