12#ifndef ARCANE_ACCELERATOR_CORE_ACCELERATORCOREGLOBAL_H
13#define ARCANE_ACCELERATOR_CORE_ACCELERATORCOREGLOBAL_H
30#ifdef ARCANE_COMPONENT_arcane_accelerator_core
31#define ARCANE_ACCELERATOR_CORE_EXPORT ARCANE_EXPORT
33#define ARCANE_ACCELERATOR_CORE_EXPORT ARCANE_IMPORT
51class AcceleratorRuntimeInitialisationInfo;
52class RunQueueBuildInfo;
54class MemoryPrefetchArgs;
59class PointerAttribute;
66 class KernelLaunchArgs;
67 class RuntimeStaticInfo;
70 using IRunQueueRuntime = IRunnerRuntime;
71 class IRunQueueStream;
73 class IReduceMemoryImpl;
74 class ReduceMemoryImpl;
76 class IRunQueueEventImpl;
77 class RunCommandLaunchInfo;
79 class RunQueueImplStack;
104extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT
153extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT
233namespace Arcane::Accelerator::impl
242extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT
void
243arcaneCheckPointerIsAccessible(
const RunQueue* queue,
const void* ptr,
244 const char* name,
const TraceInfo& ti);
251extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT
void
252arcaneCheckPointerIsAccessible(
const Runner* runner,
const void* ptr,
253 const char* name,
const TraceInfo& ti);
260extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT
void
262 const char* name,
const TraceInfo& ti);
265arcaneCheckPointerIsAccessible(
const RunQueue& queue,
const void* ptr,
266 const char* name,
const TraceInfo& ti)
268 arcaneCheckPointerIsAccessible(&queue, ptr, name, ti);
273 const char* name,
const TraceInfo& ti)
287#define ARCANE_CHECK_ACCESSIBLE_POINTER_ALWAYS(queue_or_runner_or_policy, ptr) \
288 ::Arcane::Accelerator::impl::arcaneCheckPointerIsAccessible((queue_or_runner_or_policy), (ptr), #ptr, A_FUNCINFO)
295#define ARCANE_CHECK_ACCESSIBLE_POINTER(queue_or_runner_or_policy, ptr) \
296 ARCANE_CHECK_ACCESSIBLE_POINTER_ALWAYS((queue_or_runner_or_policy), (ptr))
299#define ARCANE_CHECK_ACCESSIBLE_POINTER(queue_or_runner_or_policy, ptr)
void arcaneCheckPointerIsAccessible(const RunQueue *queue, const void *ptr, const char *name, const TraceInfo &ti)
Vérifie si ptr est accessible pour une exécution sur queue.
Déclarations des types utilisés dans Arcane.
Informations sur une adresse mémoire.
File d'exécution pour un accélérateur.
Gestionnaire d'exécution pour accélérateur.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Espace de nom pour l'utilisation des accélérateurs.
ePointerAccessibility getPointerAccessibility(eExecutionPolicy policy, const void *ptr, PointerAttribute *ptr_attr)
Accessibilité de l'adresse ptr pour une politique d'exécutionpolicy.
std::ostream & operator<<(std::ostream &o, eExecutionPolicy exec_policy)
Affiche le nom de la politique d'exécution.
eDeviceReducePolicy
Politique des opératations de réduction sur les accélérateurs.
@ Grid
Utilise un noyau de calcul avec une synchronisations entre les blocs.
@ Atomic
Utilise des opérations atomiques entre les blocs.
ePointerAccessibility
Informations d'accessibilité d'une adresse mémoire.
@ Unknown
Accessibilité inconnue.
eMemoryAdvice
Conseils pour la gestion mémoire.
ePointerMemoryType
Type de mémoire pour un pointeur.
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.
eRunQueuePriority
Niveaux de priorité prédéfinis pour les files d'exécution sur les accélérateurs.
@ Low
Une valeur arbitraire positive pour définir une priorité faible.
@ High
Une valeur arbitraire négative pour définir une priorité élevée.
@ Default
Utilise 0 comme valeur par défaut.
bool isAcceleratorPolicy(eExecutionPolicy exec_policy)
Indique si exec_policy correspond à un accélérateur.