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))
100: m_p(std::move(x.m_p))
130 m_p = std::move(x.m_p);
162 m_p->_internalBarrier();
172 return m_p->executionPolicy();
179Impl::IRunnerRuntime* RunQueue::
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();
206Impl::RunQueueImpl* RunQueue::
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);
281 m_p->recordEvent(event);
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;
375 return m_p->m_memory_ressource;
387 ARCCORE_FATAL(
"setting concurrent command creation is not supported for RunQueue running on accelerator");
388 m_p->setConcurrentCommandCreation(v);
398 return m_p->isConcurrentCommandCreation();
408 if (!queue || queue->
isNull())
410 return Impl::RuntimeStaticInfo::getPointerAccessibility(queue->
executionPolicy(), ptr, ptr_attr);
413extern "C++" void Impl::
414arcaneCheckPointerIsAccessible(
const RunQueue* queue,
const void* ptr,
417 if (!queue || queue->
isNull())
419 return Impl::RuntimeStaticInfo::checkPointerIsAcccessible(queue->
executionPolicy(), ptr, name, ti);
#define ARCCORE_FATAL(...)
Macro throwing a FatalErrorException.
#define ARCCORE_CHECK_POINTER(ptr)
Macro that returns the pointer ptr if it is not null or throws an exception if it is null.
Opaque type to encapsulate a native 'stream'.
Memory prefetching arguments.
Information about a memory address.
Information to create a RunQueue.
Execution queue for an accelerator.
bool isAsync() const
Indicates if the execution queue is asynchronous.
void waitEvent(RunQueueEvent &event)
Blocks execution on the instance until the jobs recorded in event are finished.
void copyMemory(const MemoryCopyArgs &args) const
Copies information between two memory regions.
eMemoryResource memoryRessource() const
Memory resource used for allocations with this instance.
RunQueue()
Creates a null queue.
void setAsync(bool v)
Sets the instance's asynchronous state.
void * platformStream() const
Pointer to the internal structure dependent on the implementation.
void recordEvent(RunQueueEvent &event)
bool isNull() const
Indicates if the RunQueue is null.
void prefetchMemory(const MemoryPrefetchArgs &args) const
Performs a memory prefetch.
MemoryAllocationOptions allocationOptions() const
Allocation options associated with this queue.
void barrier() const
Blocks until all commands associated with the queue are finished.
const RunQueue & addAsync(bool is_async) const
Sets the instance's asynchronous state.
eExecutionPolicy executionPolicy() const
Execution policy of the queue.
eMemoryResource memoryResource() const
Memory resource used for allocations with this instance.
void setMemoryRessource(eMemoryResource mem)
Sets the memory resource used for allocations with this instance.
bool isAcceleratorPolicy() const
Indicates if the instance is associated with an accelerator.
bool isConcurrentCommandCreation() const
Indicates if concurrent creation of multiple RunCommands is allowed.
void setConcurrentCommandCreation(bool v)
Indicates if the creation of RunCommand for this instance is allowed from multiple threads.
Execution manager for accelerator.
Options to configure allocations.
Reference to an instance.
Namespace for accelerator usage.
ePointerAccessibility getPointerAccessibility(eExecutionPolicy policy, const void *ptr, PointerAttribute *ptr_attr)
Accessibility of address ptr for execution policypolicy.
ePointerAccessibility
Accessibility information of a memory address.
@ Unknown
Unknown accessibility.
eExecutionPolicy
Execution policy for a Runner.
@ None
No execution policy.
bool isAcceleratorPolicy(eExecutionPolicy exec_policy)
Indicates if exec_policy corresponds to an accelerator.
eMemoryResource
List of available memory resources.
@ Unknown
Unknown or uninitialized value.