14#include "arcane/accelerator/CommonUtils.h"
16#include "arcane/utils/FatalErrorException.h"
17#include "arcane/utils/MemoryUtils.h"
19#if defined(ARCANE_COMPILING_HIP)
20#include "arcane/accelerator/hip/HipAccelerator.h"
22#if defined(ARCANE_COMPILING_CUDA)
23#include "arcane/accelerator/cuda/CudaAccelerator.h"
29namespace Arcane::Accelerator::impl
35#if defined(ARCANE_COMPILING_CUDA)
37cudaStream_t CudaUtils::
38toNativeStream(
const RunQueue* queue)
42 p = queue->executionPolicy();
45 cudaStream_t* s =
reinterpret_cast<cudaStream_t*
>(queue->platformStream());
51cudaStream_t CudaUtils::
52toNativeStream(
const RunQueue& queue)
54 return toNativeStream(&queue);
62#if defined(ARCANE_COMPILING_HIP)
65toNativeStream(
const RunQueue* queue)
69 p = queue->executionPolicy();
72 hipStream_t* s =
reinterpret_cast<hipStream_t*
>(queue->platformStream());
79toNativeStream(
const RunQueue& queue)
81 return toNativeStream(&queue);
89#if defined(ARCANE_COMPILING_SYCL)
91sycl::queue SyclUtils::
92toNativeStream(
const RunQueue* queue)
96 p = queue->executionPolicy();
99 sycl::queue* s =
reinterpret_cast<sycl::queue*
>(queue->platformStream());
105sycl::queue SyclUtils::
106toNativeStream(
const RunQueue& queue)
108 return toNativeStream(&queue);
119#if defined(ARCANE_COMPILING_CUDA)
120 cudaStream_t stream = CudaUtils::toNativeStream(queue);
121 ARCANE_CHECK_CUDA(::cudaMemcpyAsync(destination.
data(), source.
data(), source.
size(), cudaMemcpyDeviceToHost, stream));
122#elif defined(ARCANE_COMPILING_HIP)
123 hipStream_t stream = HipUtils::toNativeStream(queue);
124 ARCANE_CHECK_HIP(::hipMemcpyAsync(destination.
data(), source.
data(), source.
size(), hipMemcpyDefault, stream));
126 ARCANE_UNUSED(destination);
127 ARCANE_UNUSED(source);
128 ARCANE_UNUSED(queue);
136GenericDeviceStorage::
137GenericDeviceStorage()
138: m_storage(MemoryUtils::getDeviceOrHostAllocator())
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
File d'exécution pour un accélérateur.
void _copyToAsync(Span< std::byte > destination, Span< const std::byte > source, const RunQueue &queue)
Copie l'instance dans dest_ptr.
constexpr __host__ __device__ SizeType size() const noexcept
Retourne la taille du tableau.
constexpr __host__ __device__ pointer data() const noexcept
Pointeur sur le début de la vue.
Vue d'un tableau d'éléments de type T.
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.