14#include "arccore/common/accelerator/internal/AcceleratorCoreGlobalInternal.h"
15#include "arccore/common/accelerator/RunQueue.h"
17#include "arccore/base/FatalErrorException.h"
19#include "arccore/common/accelerator/internal/IRunnerRuntime.h"
20#include "arccore/common/accelerator/internal/IRunQueueStream.h"
21#include "arccore/common/accelerator/internal/IRunQueueEventImpl.h"
22#include "arccore/common/accelerator/internal/RunQueueImpl.h"
23#include "arccore/common/accelerator/internal/RunnerImpl.h"
24#include "arccore/common/accelerator/Runner.h"
25#include "arccore/common/accelerator/RunQueueEvent.h"
26#include "arccore/common/accelerator/Memory.h"
27#include "arccore/common/accelerator/NativeStream.h"
55: m_p(impl::RunQueueImpl::create(runner._impl()))
64: m_p(impl::RunQueueImpl::create(runner._impl(), bi))
73: m_p(impl::RunQueueImpl::create(runner._impl()))
82: m_p(impl::RunQueueImpl::create(runner._impl(), bi))
152 ARCCORE_FATAL(
"Invalid operation on null RunQueue");
162 m_p->_internalBarrier();
172 return m_p->executionPolicy();
180_internalRuntime()
const
182 return m_p->_internalRuntime();
188impl::IRunQueueStream* RunQueue::
189_internalStream()
const
191 return m_p->_internalStream();
197impl::RunCommandImpl* RunQueue::
198_getCommandImpl()
const
200 return m_p->_internalCreateOrGetRunCommandImpl();
217_internalNativeStream()
const
220 return m_p->_internalStream()->nativeStream();
230 return _internalNativeStream().m_native_pointer;
240 m_p->copyMemory(args);
250 m_p->prefetchMemory(args);
260 m_p->waitEvent(event);
270 ARCCORE_CHECK_POINTER(e);
281 m_p->recordEvent(event);
291 ARCCORE_CHECK_POINTER(e);
312 m_p->m_is_async = is_async;
323 return m_p->m_is_async;
343 return m_p->allocationOptions();
354 m_p->m_memory_ressource = mem;
364 return m_p->m_memory_ressource;
376 ARCCORE_FATAL(
"setting concurrent command creation is not supported for RunQueue running on accelerator");
377 m_p->setConcurrentCommandCreation(v);
387 return m_p->isConcurrentCommandCreation();
397 if (!queue || queue->
isNull())
399 return impl::RuntimeStaticInfo::getPointerAccessibility(queue->
executionPolicy(), ptr, ptr_attr);
402extern "C++" void impl::
403arcaneCheckPointerIsAccessible(
const RunQueue* queue,
const void* ptr,
406 if (!queue || queue->
isNull())
408 return impl::RuntimeStaticInfo::checkPointerIsAcccessible(queue->
executionPolicy(), ptr, name, ti);
Type opaque pour encapsuler une 'stream' native.
Arguments pour la copie mémoire.
Arguments pour le préfetching mémoire.
Informations sur une adresse mémoire.
Informations pour créer une RunQueue.
Évènement pour une file d'exécution.
File d'exécution pour un accélérateur.
bool isAsync() const
Indique si la file d'exécution est asynchrone.
void waitEvent(RunQueueEvent &event)
Bloque l'exécution sur l'instance tant que les jobs enregistrés dans event ne sont pas terminés.
void copyMemory(const MemoryCopyArgs &args) const
Copie des informations entre deux zones mémoires.
eMemoryResource memoryRessource() const
Ressource mémoire utilisée pour les allocations avec cette instance.
RunQueue()
Créé une file nulle.
void setAsync(bool v)
Positionne l'asynchronisme de l'instance.
void * platformStream() const
Pointeur sur la structure interne dépendante de l'implémentation.
void recordEvent(RunQueueEvent &event)
bool isNull() const
Indique si la RunQueue est nulle.
void prefetchMemory(const MemoryPrefetchArgs &args) const
Effectue un préfetching de la mémoire.
MemoryAllocationOptions allocationOptions() const
Options d'allocation associée à cette file.
void barrier() const
Bloque tant que toutes les commandes associées à la file ne sont pas terminées.
const RunQueue & addAsync(bool is_async) const
Positionne l'asynchronisme de l'instance.
eExecutionPolicy executionPolicy() const
Politique d'exécution de la file.
void setMemoryRessource(eMemoryResource mem)
Positionne la ressource mémoire utilisée pour les allocations avec cette instance.
bool isAcceleratorPolicy() const
Indique si l'instance est associée à un accélérateur.
bool isConcurrentCommandCreation() const
Indique si la création concurrente de plusieurs RunCommand est autorisée.
void setConcurrentCommandCreation(bool v)
Indique si on autorise la création de RunCommand pour cette instance depuis plusieurs threads.
Gestionnaire d'exécution pour accélérateur.
Interface du runtime associé à un accélérateur.
File d'exécution pour accélérateur.
Options pour configurer les allocations.
Référence à une instance.
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.
ePointerAccessibility
Informations d'accessibilité d'une adresse mémoire.
@ Unknown
Accessibilité inconnue.
eExecutionPolicy
Politique d'exécution pour un Runner.
@ None
Aucune politique d'exécution.
bool isAcceleratorPolicy(eExecutionPolicy exec_policy)
Indique si exec_policy correspond à un accélérateur.
eMemoryResource
Liste des ressources mémoire disponibles.
@ Unknown
Valeur inconnue ou non initialisée.