Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
RunCommandLaunchInfo.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/* RunCommandLaunchInfo.h (C) 2000-2024 */
9/* */
10/* Informations pour l'exécution d'une 'RunCommand'. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ACCELERATOR_RUNCOMMANDLAUNCHINFO_H
13#define ARCANE_ACCELERATOR_RUNCOMMANDLAUNCHINFO_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/CheckedConvert.h"
19#include "arcane/utils/Profiling.h"
20
21#include "arcane/accelerator/AcceleratorGlobal.h"
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26namespace Arcane::Accelerator::impl
27{
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
36class ARCANE_ACCELERATOR_EXPORT RunCommandLaunchInfo
37{
38 template <typename SyclKernel, typename Lambda, typename LambdaArgs, typename... ReducerArgs>
39 friend void _applyKernelSYCL(impl::RunCommandLaunchInfo& launch_info, SyclKernel kernel, Lambda& func,
40 const LambdaArgs& args, const ReducerArgs&... reducer_args);
41
42 public:
43
45 {
46 int nb_block_per_grid = 0;
47 int nb_thread_per_block = 0;
48 };
49
50 public:
51
55 RunCommandLaunchInfo operator=(const RunCommandLaunchInfo&) = delete;
56
57 public:
58
59 eExecutionPolicy executionPolicy() const { return m_exec_policy; }
60
67 void beginExecute();
68
75 void endExecute();
76
78 ThreadBlockInfo threadBlockInfo() const { return m_thread_block_info; }
79
81 ParallelLoopOptions computeParallelLoopOptions() const;
82
84 void computeLoopRunInfo();
85
87 const ForLoopRunInfo& loopRunInfo() const { return m_loop_run_info; }
88
90 Int64 totalLoopSize() const { return m_total_loop_size; }
91
92 public:
93
94 void* _internalStreamImpl();
95
96 private:
97
98 RunCommand& m_command;
99 bool m_has_exec_begun = false;
100 bool m_is_notify_end_kernel_done = false;
101 IRunnerRuntime* m_runtime = nullptr;
102 IRunQueueStream* m_queue_stream = nullptr;
103 eExecutionPolicy m_exec_policy = eExecutionPolicy::Sequential;
104 ThreadBlockInfo m_thread_block_info;
105 ForLoopRunInfo m_loop_run_info;
106 Int64 m_total_loop_size = 0;
107
108 private:
109
110 void _begin();
111 void _doEndKernelLaunch();
112 ThreadBlockInfo _computeThreadBlockInfo() const;
113
114 private:
115
116 // Pour SYCL: enregistre l'évènement associé à la dernière commande de la file
117 // \a sycl_event_ptr est de type 'sycl::event*'.
118 void _addSyclEvent(void* sycl_event_ptr);
119};
120
121/*---------------------------------------------------------------------------*/
122/*---------------------------------------------------------------------------*/
123
124} // End namespace Arcane::Accelerator::impl
125
126/*---------------------------------------------------------------------------*/
127/*---------------------------------------------------------------------------*/
128
129#endif
Classes, Types et macros pour gérer la concurrence.
Gestion d'une commande sur accélérateur.
Interface d'un flux d'exécution pour une RunQueue.
Interface du runtime associé à une RunQueue.
Object temporaire pour conserver les informations d'exécution d'une commande et regrouper les tests.
Int64 totalLoopSize() const
Taille totale de la boucle.
ThreadBlockInfo threadBlockInfo() const
Informations sur le nombre de block/thread/grille du noyau à lancer.
const ForLoopRunInfo & loopRunInfo() const
Informations d'exécution de la boucle.
Informations d'exécution d'une boucle.
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.
eExecutionPolicy
Politique d'exécution pour un Runner.
std::int64_t Int64
Type entier signé sur 64 bits.