Arcane  v3.15.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
core/RunCommand.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/* RunCommand.h (C) 2000-2024 */
9/* */
10/* Gestion d'une commande sur accélérateur. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ACCELERATOR_CORE_RUNCOMMAND_H
13#define ARCANE_ACCELERATOR_CORE_RUNCOMMAND_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane::Accelerator
23{
24namespace impl
25{
26extern "C++" ARCANE_ACCELERATOR_CORE_EXPORT IReduceMemoryImpl*
27internalGetOrCreateReduceMemoryImpl(RunCommand* command);
28}
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
40class ARCANE_ACCELERATOR_CORE_EXPORT RunCommand
41{
42 friend impl::IReduceMemoryImpl* impl::internalGetOrCreateReduceMemoryImpl(RunCommand* command);
44 friend impl::RunQueueImpl;
45 friend class ViewBuildInfo;
46
49
50 public:
51
53
54 protected:
55
56 explicit RunCommand(const RunQueue& run_queue);
57
58 public:
59
60 RunCommand(RunCommand&& command) = delete;
61 RunCommand(const RunCommand&) = delete;
62 RunCommand& operator=(const RunCommand&) = delete;
63 RunCommand& operator=(RunCommand&&) = delete;
64
65 public:
66
74 RunCommand& addTraceInfo(const TraceInfo& ti);
75
81 RunCommand& addKernelName(const String& v);
82
90 RunCommand& addNbThreadPerBlock(Int32 v);
91
93 const TraceInfo& traceInfo() const;
94
96 const String& kernelName() const;
97
98 /*
99 * \brief Nombre de threads par bloc ou 0 pour la valeur par défaut.
100 *
101 * Cette valeur est utilisée uniquement si on s'exécute sur accélérateur.
102 */
103 Int32 nbThreadPerBlock() const;
104
106 void setParallelLoopOptions(const ParallelLoopOptions& opt);
107
109 const ParallelLoopOptions& parallelLoopOptions() const;
110
112 friend ARCANE_ACCELERATOR_CORE_EXPORT RunCommand&
113 operator<<(RunCommand& command, const TraceInfo& trace_info);
114
115 private:
116
117 // Pour RunCommandLaunchInfo
118 void _internalNotifyBeginLaunchKernel();
119 void _internalNotifyEndLaunchKernel();
120 void _internalNotifyBeginLaunchKernelSyclEvent(void* sycl_event_ptr);
121 ForLoopOneExecStat* _internalCommandExecStat();
122
123 private:
124
126 impl::RunQueueImpl* _internalQueueImpl() const;
127 impl::NativeStream _internalNativeStream() const;
128 static impl::RunCommandImpl* _internalCreateImpl(impl::RunQueueImpl* queue);
129 static void _internalDestroyImpl(impl::RunCommandImpl* p);
130
131 private:
132
133 void _allocateReduceMemory(Int32 nb_grid);
134
135 private:
136
138};
139
140/*---------------------------------------------------------------------------*/
141/*---------------------------------------------------------------------------*/
142
143} // End namespace Arcane::Accelerator
144
145/*---------------------------------------------------------------------------*/
146/*---------------------------------------------------------------------------*/
147
148#endif
Gestion d'une commande sur accélérateur.
File d'exécution pour un accélérateur.
Informations pour construire une vue pour les données sur accélérateur.
Interface de la gestion mémoire pour les réductions.
Type opaque pour encapsuler une 'stream' native.
Implémentation d'une commande pour accélérateur.
Object temporaire pour conserver les informations d'exécution d'une commande et regrouper les tests.
File d'exécution pour accélérateur.
Classe pour gérer le profiling d'une seule exécution d'une boucle.
Definition Profiling.h:93
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:149
Options d'exécution d'une boucle parallèle en multi-thread.
Chaîne de caractères unicode.
Espace de nom pour l'utilisation des accélérateurs.
RunCommand makeCommand(const RunQueue &run_queue)
Créé une commande associée à la file run_queue.