12#ifndef ARCCORE_COMMON_ACCELERATOR_COMMONACCELERATORCOREGLOBAL_H
13#define ARCCORE_COMMON_ACCELERATOR_COMMONACCELERATORCOREGLOBAL_H
17#include "arccore/common/CommonGlobal.h"
18#include "arccore/trace/TraceGlobal.h"
63 class RuntimeStaticInfo;
66 using IRunQueueRuntime = IRunnerRuntime;
67 class IRunQueueStream;
70 class ReduceMemoryImpl;
72 class IRunQueueEventImpl;
74 class RunQueueImplStack;
106extern "C++" ARCCORE_COMMON_EXPORT
126 Atomic ARCCORE_DEPRECATED_REASON(
"Y2025: Use eDeviceReducePolicy::Grid instead") = 1,
164extern "C++" ARCCORE_COMMON_EXPORT
246namespace Arcane::Accelerator::Impl
254extern "C++" ARCCORE_COMMON_EXPORT
void
255arcaneCheckPointerIsAccessible(
const RunQueue* queue,
const void* ptr,
256 const char* name,
const TraceInfo& ti);
263extern "C++" ARCCORE_COMMON_EXPORT
void
264arcaneCheckPointerIsAccessible(
const Runner* runner,
const void* ptr,
265 const char* name,
const TraceInfo& ti);
272extern "C++" ARCCORE_COMMON_EXPORT
void
274 const char* name,
const TraceInfo& ti);
277arcaneCheckPointerIsAccessible(
const RunQueue& queue,
const void* ptr,
278 const char* name,
const TraceInfo& ti)
280 arcaneCheckPointerIsAccessible(&queue, ptr, name, ti);
284arcaneCheckPointerIsAccessible(
const Runner& runner,
const void* ptr,
285 const char* name,
const TraceInfo& ti)
287 arcaneCheckPointerIsAccessible(&runner, ptr, name, ti);
300#define ARCCORE_CHECK_ACCESSIBLE_POINTER_ALWAYS(queue_or_runner_or_policy, ptr) \
301 ::Arcane::Accelerator::Impl::arcaneCheckPointerIsAccessible((queue_or_runner_or_policy), (ptr), #ptr, A_FUNCINFO)
303#define ARCANE_CHECK_ACCESSIBLE_POINTER_ALWAYS(queue_or_runner_or_policy, ptr) \
304 ARCANE_CHECK_ACCESSIBLE_POINTER_ALWAYS((queue_or_runner_or_policy), (ptr))
309#if defined(ARCCORE_CHECK)
312#define ARCCORE_CHECK_ACCESSIBLE_POINTER(queue_or_runner_or_policy, ptr) \
313 ARCCORE_CHECK_ACCESSIBLE_POINTER_ALWAYS((queue_or_runner_or_policy), (ptr))
315#define ARCANE_CHECK_ACCESSIBLE_POINTER(queue_or_runner_or_policy, ptr) \
316 ARCCORE_CHECK_ACCESSIBLE_POINTER((queue_or_runner_or_policy), (ptr))
322#define ARCCORE_CHECK_ACCESSIBLE_POINTER(queue_or_runner_or_policy, ptr)
324#define ARCANE_CHECK_ACCESSIBLE_POINTER(queue_or_runner_or_policy, ptr)
331namespace Arcane::Accelerator::impl
Information for accelerator initialization.
Identifier of a system component.
Information about an accelerator.
Accelerator memory information.
Accelerator manager interface.
Interface of a list of devices.
Opaque type to encapsulate a native 'stream'.
Memory prefetching arguments.
Information about a memory address.
Management of an accelerator command.
Information to create a RunQueue.
Execution queue for an accelerator.
Execution manager for accelerator.
Information to build a view for accelerator data.
Namespace for accelerator usage.
ePointerAccessibility getPointerAccessibility(eExecutionPolicy policy, const void *ptr, PointerAttribute *ptr_attr)
Accessibility of address ptr for execution policypolicy.
eDeviceReducePolicy
Reduction operation policy on accelerators.
@ Grid
Uses a compute kernel with synchronization between blocks.
@ Atomic
Uses atomic operations between blocks.
ePointerAccessibility
Accessibility information of a memory address.
@ Unknown
Unknown accessibility.
eMemoryAdvice
Memory management advice.
ePointerMemoryType
Memory type for a pointer.
eExecutionPolicy
Execution policy for a Runner.
@ SYCL
Execution policy using the SYCL environment.
@ HIP
Execution policy using the HIP environment.
@ None
No execution policy.
@ CUDA
Execution policy using the CUDA environment.
@ Sequential
Sequential execution policy.
@ Thread
Multi-threaded execution policy.
eRunQueuePriority
Predefined priority levels for run queues on accelerators.
@ Low
An arbitrary positive value to define a low priority.
@ High
An arbitrary negative value to define a high priority.
@ Default
Uses 0 as the default value.
bool isAcceleratorPolicy(eExecutionPolicy exec_policy)
Indicates if exec_policy corresponds to an accelerator.
@ Host
The memory is on the host.
@ Device
The memory is on the accelerator.
std::ostream & operator<<(std::ostream &ostr, eItemKind item_kind)
Output operator for a stream.