Arcane  v3.14.10.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(const RunCommand&) = delete;
61 RunCommand& operator=(const RunCommand&) = delete;
62
63 public:
64
72 RunCommand& addTraceInfo(const TraceInfo& ti);
73
79 RunCommand& addKernelName(const String& v);
80
88 RunCommand& addNbThreadPerBlock(Int32 v);
89
91 const TraceInfo& traceInfo() const;
92
94 const String& kernelName() const;
95
96 /*
97 * \brief Nombre de threads par bloc ou 0 pour la valeur par défaut.
98 *
99 * Cette valeur est utilisée uniquement si on s'exécute sur accélérateur.
100 */
101 Int32 nbThreadPerBlock() const;
102
104 void setParallelLoopOptions(const ParallelLoopOptions& opt);
105
107 const ParallelLoopOptions& parallelLoopOptions() const;
108
110 friend ARCANE_ACCELERATOR_CORE_EXPORT RunCommand&
111 operator<<(RunCommand& command, const TraceInfo& trace_info);
112
113 private:
114
115 // Pour RunCommandLaunchInfo
116 void _internalNotifyBeginLaunchKernel();
117 void _internalNotifyEndLaunchKernel();
118 void _internalNotifyBeginLaunchKernelSyclEvent(void* sycl_event_ptr);
119 ForLoopOneExecStat* _internalCommandExecStat();
120
121 private:
122
124 RunQueue _internalQueue() const;
125 impl::RunQueueImpl* _internalQueueImpl() const;
126 static impl::RunCommandImpl* _internalCreateImpl(impl::RunQueueImpl* queue);
127 static void _internalDestroyImpl(impl::RunCommandImpl* p);
128
129 private:
130
131 void _allocateReduceMemory(Int32 nb_grid);
132
133 private:
134
135 //RunQueue m_run_queue;
137};
138
139/*---------------------------------------------------------------------------*/
140/*---------------------------------------------------------------------------*/
141
142} // End namespace Arcane::Accelerator
143
144/*---------------------------------------------------------------------------*/
145/*---------------------------------------------------------------------------*/
146
147#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.
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:120
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.