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"
21#include "arcane/accelerator/core/Runner.h"
22#include "arcane/accelerator/core/DeviceId.h"
37 bool m_is_using_accelerator_runtime =
false;
38 String m_accelerator_runtime;
45template<
typename V>
void AcceleratorRuntimeInitialisationInfo::
46_applyPropertyVisitor(V& p)
49 p << b.addString(
"AcceleratorRuntime")
50 .addDescription(
"Name of the accelerator runtime (currently only 'cuda', 'hip' or 'sycl') to use")
51 .addCommandLineArgument(
"AcceleratorRuntime")
52 .addGetter([](
auto a) {
return a.x.acceleratorRuntime(); })
53 .addSetter([](
auto a) { a.x.setAcceleratorRuntime(a.v); });
54 p << b.addBool(
"UseAccelerator")
55 .addDescription(
"activate/deactivate accelerator runtime")
56 .addCommandLineArgument(
"UseAccelerator")
57 .addGetter([](
auto a) {
return a.x.isUsingAcceleratorRuntime(); })
58 .addSetter([](
auto a) { a.x.setIsUsingAcceleratorRuntime(a.v); });
64AcceleratorRuntimeInitialisationInfo::
65AcceleratorRuntimeInitialisationInfo()
73AcceleratorRuntimeInitialisationInfo::
74AcceleratorRuntimeInitialisationInfo(
const AcceleratorRuntimeInitialisationInfo& rhs)
75: m_p(new Impl(*rhs.m_p))
82AcceleratorRuntimeInitialisationInfo& AcceleratorRuntimeInitialisationInfo::
83operator=(
const AcceleratorRuntimeInitialisationInfo& rhs)
87 m_p =
new Impl(*(rhs.m_p));
95AcceleratorRuntimeInitialisationInfo::
96~AcceleratorRuntimeInitialisationInfo()
107bool AcceleratorRuntimeInitialisationInfo::
108isUsingAcceleratorRuntime()
const
110 return m_p->m_is_using_accelerator_runtime;
116 m_p->m_is_using_accelerator_runtime = v;
122String AcceleratorRuntimeInitialisationInfo::
123acceleratorRuntime()
const
125 return m_p->m_accelerator_runtime;
131 m_p->m_accelerator_runtime = v;
142 return m_p->m_device_id;
148 m_p->m_device_id = v;
157 String a = acceleratorRuntime();
174extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT
void
178 using namespace Accelerator;
179 String accelerator_runtime = acc_info.acceleratorRuntime();
183 tm->
info() <<
"AcceleratorRuntime=" << accelerator_runtime;
185 if (impl::isAcceleratorPolicy(policy)){
186 tm->
info() <<
"Using accelerator runtime=" << policy <<
" device=" << acc_info.
deviceId();
191 tm->
info() <<
"Using accelerator runtime=" << policy;
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Classes, Types et macros pour gérer la concurrence.
Fonctions de gestion mémoire et des allocateurs.
Informations pour l'initialisation des accélérateurs.
void setAcceleratorRuntime(StringView name)
Nom du runtime utilisé (pour l'instant uniquement 'cuda', 'hip' ou 'sycl')
eExecutionPolicy executionPolicy() const
Politique d'exécution associée à acceleratorRuntime()
void setIsUsingAcceleratorRuntime(bool v)
Indique si on utilise un runtime accélérateur.
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.
eMemoryResource getDefaultDataMemoryResource()
Ressource mémoire utilisée par l'allocateur par défaut pour les données.