Arcane  v4.1.0.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
AcceleratorGlobal.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* AcceleratorGlobal.h (C) 2000-2025 */
9/* */
10/* Déclarations générales pour le support des accélérateurs. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ACCELERATOR_ACCELERATORGLOBAL_H
13#define ARCANE_ACCELERATOR_ACCELERATORGLOBAL_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
20
21#include <iosfwd>
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26#ifdef ARCANE_COMPONENT_arcane_accelerator
27#define ARCANE_ACCELERATOR_EXPORT ARCANE_EXPORT
28#else
29#define ARCANE_ACCELERATOR_EXPORT ARCANE_IMPORT
30#endif
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
35namespace Arcane::Accelerator
36{
37namespace Impl
38{
41}
42
43/*---------------------------------------------------------------------------*/
44/*---------------------------------------------------------------------------*/
45
46template<typename T, Int32 Extent = DynExtent> class LocalMemory;
47
48/*---------------------------------------------------------------------------*/
49/*---------------------------------------------------------------------------*/
50
51//! Type d'opération atomique supportée
53{
54 //! Ajout
56 //! Minimum
58 //! Maximum
60};
61
62/*---------------------------------------------------------------------------*/
63/*---------------------------------------------------------------------------*/
64
65/*!
66 * \brief Initialise \a runner en fonction de
67 * la valeur de \a acc_info.
68 */
69extern "C++" ARCANE_ACCELERATOR_EXPORT void
72
73/*---------------------------------------------------------------------------*/
74/*---------------------------------------------------------------------------*/
75
76} // End namespace Arcane::Accelerator
77
78/*---------------------------------------------------------------------------*/
79/*---------------------------------------------------------------------------*/
80
81namespace Arcane::Accelerator::impl
82{
83
84/*---------------------------------------------------------------------------*/
85/*---------------------------------------------------------------------------*/
86
87extern "C++" ARCANE_ACCELERATOR_EXPORT String
88getBadPolicyMessage(eExecutionPolicy policy);
89
90/*---------------------------------------------------------------------------*/
91/*---------------------------------------------------------------------------*/
92
93}
94
95/*---------------------------------------------------------------------------*/
96/*---------------------------------------------------------------------------*/
97
98//! Macro pour indiquer qu'un noyau n'a pas été compilé avec HIP
99#define ARCANE_FATAL_NO_HIP_COMPILATION() \
100 ARCANE_FATAL(Arcane::Accelerator::impl::getBadPolicyMessage(Arcane::Accelerator::eExecutionPolicy::HIP));
101
102//! Macro pour indiquer qu'un noyau n'a pas été compilé avec CUDA
103#define ARCANE_FATAL_NO_CUDA_COMPILATION() \
104 ARCANE_FATAL(Arcane::Accelerator::impl::getBadPolicyMessage(Arcane::Accelerator::eExecutionPolicy::CUDA));
105
106//! Macro pour indiquer qu'un noyau n'a pas été compilé avec SYCL
107#define ARCANE_FATAL_NO_SYCL_COMPILATION() \
108 ARCANE_FATAL(Arcane::Accelerator::impl::getBadPolicyMessage(Arcane::Accelerator::eExecutionPolicy::SYCL));
109
110/*---------------------------------------------------------------------------*/
111/*---------------------------------------------------------------------------*/
112
113#endif
Déclarations des types utilisés dans Arcane.
Classe pour appliquer une opération pour les arguments supplémentaires en début et en fin de noyau CU...
Classe pour appliquer une opération pour les arguments supplémentaires en début et en fin de noyau Sy...
Gestionnaire d'exécution pour accélérateur.
Definition core/Runner.h:67
Interface du gestionnaire de traces.
Espace de nom pour l'utilisation des accélérateurs.
void initializeRunner(Runner &runner, ITraceMng *tm, const AcceleratorRuntimeInitialisationInfo &acc_info)
Initialise runner en fonction de la valeur de acc_info.
eAtomicOperation
Type d'opération atomique supportée.
eExecutionPolicy
Politique d'exécution pour un Runner.