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;
57class DeviceMemoryInfo;
60class PointerAttribute;
67 class KernelLaunchArgs;
68 class RuntimeStaticInfo;
71 using IRunQueueRuntime = IRunnerRuntime;
72 class IRunQueueStream;
74 class IReduceMemoryImpl;
75 class ReduceMemoryImpl;
77 class IRunQueueEventImpl;
78 class RunCommandLaunchInfo;
80 class RunQueueImplStack;
109extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT
158extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT
238namespace Arcane::Accelerator::impl
247extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT
void
248arcaneCheckPointerIsAccessible(
const RunQueue* queue,
const void* ptr,
249 const char* name,
const TraceInfo& ti);
256extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT
void
257arcaneCheckPointerIsAccessible(
const Runner* runner,
const void* ptr,
258 const char* name,
const TraceInfo& ti);
265extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT
void
267 const char* name,
const TraceInfo& ti);
270arcaneCheckPointerIsAccessible(
const RunQueue& queue,
const void* ptr,
271 const char* name,
const TraceInfo& ti)
273 arcaneCheckPointerIsAccessible(&queue, ptr, name, ti);
278 const char* name,
const TraceInfo& ti)
292#define ARCANE_CHECK_ACCESSIBLE_POINTER_ALWAYS(queue_or_runner_or_policy, ptr) \
293 ::Arcane::Accelerator::impl::arcaneCheckPointerIsAccessible((queue_or_runner_or_policy), (ptr), #ptr, A_FUNCINFO)
300#define ARCANE_CHECK_ACCESSIBLE_POINTER(queue_or_runner_or_policy, ptr) \
301 ARCANE_CHECK_ACCESSIBLE_POINTER_ALWAYS((queue_or_runner_or_policy), (ptr))
304#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.