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 RuntimeStaticInfo;
69 using IRunQueueRuntime = IRunnerRuntime;
70 class IRunQueueStream;
72 class IReduceMemoryImpl;
73 class ReduceMemoryImpl;
75 class IRunQueueEventImpl;
76 class RunCommandLaunchInfo;
78 class RunQueueImplStack;
103extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT
152extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT
232namespace Arcane::Accelerator::impl
241extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT
void
242arcaneCheckPointerIsAccessible(
const RunQueue* queue,
const void* ptr,
243 const char* name,
const TraceInfo& ti);
250extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT
void
251arcaneCheckPointerIsAccessible(
const Runner* runner,
const void* ptr,
252 const char* name,
const TraceInfo& ti);
259extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT
void
261 const char* name,
const TraceInfo& ti);
264arcaneCheckPointerIsAccessible(
const RunQueue& queue,
const void* ptr,
265 const char* name,
const TraceInfo& ti)
267 arcaneCheckPointerIsAccessible(&queue, ptr, name, ti);
272 const char* name,
const TraceInfo& ti)
286#define ARCANE_CHECK_ACCESSIBLE_POINTER_ALWAYS(queue_or_runner_or_policy, ptr) \
287 ::Arcane::Accelerator::impl::arcaneCheckPointerIsAccessible((queue_or_runner_or_policy), (ptr), #ptr, A_FUNCINFO)
294#define ARCANE_CHECK_ACCESSIBLE_POINTER(queue_or_runner_or_policy, ptr) \
295 ARCANE_CHECK_ACCESSIBLE_POINTER_ALWAYS((queue_or_runner_or_policy), (ptr))
298#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.
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.
@ Device
Alloue sur le device.