Arcane
v4.1.1.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ConcurrencyUtils.h
Aller à la documentation de ce fichier.
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
/* ConcurrencyUtils.h (C) 2000-2025 */
9
/* */
10
/* Classes gérant la concurrence (tâches, boucles parallèles, ...) */
11
/*---------------------------------------------------------------------------*/
12
#ifndef ARCANE_UTILS_CONCURRENCYUTILS_H
13
#define ARCANE_UTILS_CONCURRENCYUTILS_H
14
/*---------------------------------------------------------------------------*/
15
/*---------------------------------------------------------------------------*/
16
17
#include "
arcane/utils/UtilsTypes.h
"
18
19
#include "arccore/concurrency/ParallelFor.h"
20
#include "arccore/concurrency/TaskFactory.h"
21
#include "arccore/concurrency/ITaskImplementation.h"
22
#include "arccore/concurrency/Task.h"
23
#include "arccore/base/ForLoopRunInfo.h"
24
25
/*---------------------------------------------------------------------------*/
26
/*---------------------------------------------------------------------------*/
27
28
namespace
Arcane
29
{
30
31
/*---------------------------------------------------------------------------*/
32
/*---------------------------------------------------------------------------*/
33
/*!
34
* \brief Applique en concurrence la fonction lambda \a lambda_function
35
* sur l'intervalle d'itération donné par \a loop_ranges.
36
*/
37
template
<
int
RankValue,
typename
LambdaType,
typename
... ReducerArgs>
inline
void
38
arcaneParallelFor
(
const
ComplexForLoopRanges<RankValue>
& loop_ranges,
39
const
ForLoopRunInfo
& run_info,
40
const
LambdaType& lambda_function,
41
const
ReducerArgs&... reducer_args)
42
{
43
arccoreParallelFor(loop_ranges,run_info,lambda_function,reducer_args...);
44
}
45
46
/*---------------------------------------------------------------------------*/
47
/*---------------------------------------------------------------------------*/
48
/*!
49
* \brief Applique en concurrence la fonction lambda \a lambda_function
50
* sur l'intervalle d'itération donné par \a loop_ranges.
51
*/
52
template
<
int
RankValue,
typename
LambdaType,
typename
... ReducerArgs>
inline
void
53
arcaneParallelFor
(
const
ComplexForLoopRanges<RankValue>
& loop_ranges,
54
const
ParallelLoopOptions
& options,
55
const
LambdaType& lambda_function,
56
const
ReducerArgs&... reducer_args)
57
{
58
arccoreParallelFor(loop_ranges,
ForLoopRunInfo
(options),lambda_function,reducer_args...);
59
}
60
61
/*---------------------------------------------------------------------------*/
62
/*---------------------------------------------------------------------------*/
63
/*!
64
* \brief Applique en concurrence la fonction lambda \a lambda_function
65
* sur l'intervalle d'itération donné par \a loop_ranges.
66
*/
67
template
<
int
RankValue,
typename
LambdaType,
typename
... ReducerArgs>
inline
void
68
arcaneParallelFor
(
const
SimpleForLoopRanges<RankValue>
& loop_ranges,
69
const
ForLoopRunInfo
& run_info,
70
const
LambdaType& lambda_function,
71
const
ReducerArgs&... reducer_args)
72
{
73
arccoreParallelFor(loop_ranges,run_info,lambda_function,reducer_args...);
74
}
75
76
/*---------------------------------------------------------------------------*/
77
/*---------------------------------------------------------------------------*/
78
/*!
79
* \brief Applique en concurrence la fonction lambda \a lambda_function
80
* sur l'intervalle d'itération donné par \a loop_ranges.
81
*/
82
template
<
int
RankValue,
typename
LambdaType,
typename
... ReducerArgs>
inline
void
83
arcaneParallelFor
(
const
SimpleForLoopRanges<RankValue>
& loop_ranges,
84
const
ParallelLoopOptions
& options,
85
const
LambdaType& lambda_function,
86
const
ReducerArgs&... reducer_args)
87
{
88
arccoreParallelFor(loop_ranges,options,lambda_function,reducer_args...);
89
}
90
91
/*---------------------------------------------------------------------------*/
92
/*---------------------------------------------------------------------------*/
93
/*!
94
* \brief Applique en concurrence la fonction lambda \a lambda_function
95
* sur l'intervalle d'itération donné par \a loop_ranges.
96
*/
97
template
<
int
RankValue,
typename
LambdaType>
inline
void
98
arcaneParallelFor
(
const
ComplexForLoopRanges<RankValue>
& loop_ranges,
99
const
LambdaType& lambda_function)
100
{
101
arccoreParallelFor(loop_ranges,lambda_function);
102
}
103
104
/*---------------------------------------------------------------------------*/
105
/*---------------------------------------------------------------------------*/
106
/*!
107
* \brief Applique en concurrence la fonction lambda \a lambda_function
108
* sur l'intervalle d'itération donné par \a loop_ranges.
109
*/
110
template
<
int
RankValue,
typename
LambdaType>
inline
void
111
arcaneParallelFor
(
const
SimpleForLoopRanges<RankValue>
& loop_ranges,
112
const
LambdaType& lambda_function)
113
{
114
arccoreParallelFor(loop_ranges,lambda_function);
115
}
116
117
/*---------------------------------------------------------------------------*/
118
/*---------------------------------------------------------------------------*/
119
120
}
// End namespace Arcane
121
122
/*---------------------------------------------------------------------------*/
123
/*---------------------------------------------------------------------------*/
124
125
#endif
UtilsTypes.h
Déclarations des types utilisés dans Arcane.
Arcane::ComplexForLoopRanges
Definition
arccore/src/base/arccore/base/ForLoopRanges.h:109
Arcane::ForLoopRunInfo
Informations d'exécution d'une boucle.
Definition
ForLoopRunInfo.h:37
Arcane::ParallelLoopOptions
Options d'exécution d'une boucle parallèle en multi-thread.
Definition
arccore/src/base/arccore/base/ParallelLoopOptions.h:35
Arcane::SimpleForLoopRanges
Interval d'itération simple.
Definition
arccore/src/base/arccore/base/ForLoopRanges.h:66
Arcane::arcaneParallelFor
void arcaneParallelFor(Integer i0, Integer size, InstanceType *itype, void(InstanceType::*lambda_function)(Integer i0, Integer size))
Applique en concurrence la fonction lambda lambda_function sur l'intervalle d'itération [i0,...
Definition
Concurrency.h:201
Arcane
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Definition
AbstractCaseDocumentVisitor.cc:20
arcane
utils
ConcurrencyUtils.h
Généré le Lundi 1 Décembre 2025 03:37:30 pour Arcane par
1.13.2