Arcane  v3.15.0.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
NativeStream.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* NativeStream.h (C) 2000-2024 */
9/* */
10/* Type opaque pour encapsuler une 'stream' native. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ACCELERATOR_CORE_PLATFORMSTREAM_H
13#define ARCANE_ACCELERATOR_CORE_PLATFORMSTREAM_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21namespace Arcane::Accelerator
22{
23namespace Cuda
24{
25 class CudaRunQueueStream;
26}
27namespace Hip
28{
29 class HipRunQueueStream;
30}
31namespace Sycl
32{
33 class SyclRunQueueStream;
34}
35}
36
37/*---------------------------------------------------------------------------*/
38/*---------------------------------------------------------------------------*/
39
40namespace Arcane::Accelerator::impl
41{
42
43/*---------------------------------------------------------------------------*/
44/*---------------------------------------------------------------------------*/
45/*!
46 * \brief Type opaque pour encapsuler une 'stream' native.
47 *
48 * Cette classe permet de conserver *temporairement* une stream native.
49 * Le type exact dépend du runtime: cudaStream_t, hipStream_to ou sycl::queue.
50 *
51 * Les instances de cette classe ne doivent pas être conservées.
52 */
53class ARCANE_ACCELERATOR_CORE_EXPORT NativeStream
54{
57 friend Arcane::Accelerator::Cuda::CudaRunQueueStream;
58 friend Arcane::Accelerator::Hip::HipRunQueueStream;
59 friend Arcane::Accelerator::Sycl::SyclRunQueueStream;
60 friend Arcane::Accelerator::impl::CudaUtils;
61 friend Arcane::Accelerator::impl::HipUtils;
62 friend Arcane::Accelerator::impl::SyclUtils;
63
64 public:
65
66 NativeStream() = default;
67
68 private:
69
70 explicit NativeStream(void* ptr)
71 : m_native_pointer(ptr)
72 {}
73
74 private:
75
76 void* m_native_pointer = nullptr;
77};
78
79/*---------------------------------------------------------------------------*/
80/*---------------------------------------------------------------------------*/
81
82} // namespace Arcane::Accelerator::impl
83
84/*---------------------------------------------------------------------------*/
85/*---------------------------------------------------------------------------*/
86
87#endif
Gestion d'une commande sur accélérateur.
File d'exécution pour un accélérateur.
Type opaque pour encapsuler une 'stream' native.
Espace de nom pour l'utilisation des accélérateurs.