Skip to content

Commit f0d9bee

Browse files
[arcane,core] Ajoute méthodes dans 'VariableUtils' pour marquer les variables principalement en lecture seule.
1 parent 455b72c commit f0d9bee

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

arcane/src/arcane/core/VariableUtils.cc

+33
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020
#include "arcane/core/IVariable.h"
2121
#include "arcane/core/VariableRef.h"
2222
#include "arcane/core/internal/IDataInternal.h"
23+
#include "arcane/core/datatype/DataAllocationInfo.h"
24+
#include "arcane/core/materials/MeshMaterialVariableRef.h"
25+
#include "arcane/core/materials/internal/IMeshMaterialVariableInternal.h"
2326

2427
/*---------------------------------------------------------------------------*/
2528
/*---------------------------------------------------------------------------*/
@@ -66,6 +69,36 @@ prefetchVariableAsync(VariableRef& var, RunQueue* queue_or_null)
6669
/*---------------------------------------------------------------------------*/
6770
/*---------------------------------------------------------------------------*/
6871

72+
void VariableUtils::
73+
markVariableAsMostlyReadOnly(IVariable* var)
74+
{
75+
DataAllocationInfo alloc_info(eMemoryLocationHint::HostAndDeviceMostlyRead);
76+
var->setAllocationInfo(alloc_info);
77+
}
78+
79+
/*---------------------------------------------------------------------------*/
80+
/*---------------------------------------------------------------------------*/
81+
82+
void VariableUtils::
83+
markVariableAsMostlyReadOnly(VariableRef& var)
84+
{
85+
return markVariableAsMostlyReadOnly(var.variable());
86+
}
87+
88+
/*---------------------------------------------------------------------------*/
89+
/*---------------------------------------------------------------------------*/
90+
91+
void VariableUtils::
92+
markVariableAsMostlyReadOnly(::Arcane::Materials::MeshMaterialVariableRef& var)
93+
{
94+
auto vars = var.materialVariable()->_internalApi()->variableReferenceList();
95+
for (VariableRef* v : vars)
96+
markVariableAsMostlyReadOnly(v->variable());
97+
}
98+
99+
/*---------------------------------------------------------------------------*/
100+
/*---------------------------------------------------------------------------*/
101+
69102
} // namespace Arcane
70103

71104
/*---------------------------------------------------------------------------*/

arcane/src/arcane/core/VariableUtils.h

+24
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
/*---------------------------------------------------------------------------*/
1616

1717
#include "arcane/core/ArcaneTypes.h"
18+
#include "arcane/core/materials/MaterialsCoreGlobal.h"
1819

1920
/*---------------------------------------------------------------------------*/
2021
/*---------------------------------------------------------------------------*/
@@ -44,6 +45,29 @@ void prefetchVariableAsync(IVariable* var, RunQueue* queue_or_null);
4445
extern "C++" ARCANE_CORE_EXPORT
4546
void prefetchVariableAsync(VariableRef& var, RunQueue* queue_or_null);
4647

48+
/*!
49+
* \brief Indique que la variable est essentiellement en lecture.
50+
*
51+
* Cela est utilisé uniquement avec les accélérateurs et permet d'éviter
52+
* des transferts mémoire en l'accélérateur et le CPU.
53+
*/
54+
extern "C++" ARCANE_CORE_EXPORT
55+
void markVariableAsMostlyReadOnly(IVariable* var);
56+
57+
/*!
58+
* \brief Indique que la variable est essentiellement en lecture.
59+
* \a void markVariableAsMostlyReadOnly(IVariableRef* var);
60+
*/
61+
extern "C++" ARCANE_CORE_EXPORT
62+
void markVariableAsMostlyReadOnly(VariableRef& var);
63+
64+
/*!
65+
* \brief Indique que la variable est essentiellement en lecture.
66+
* \a void markVariableAsMostlyReadOnly(IVariableRef* var);
67+
*/
68+
extern "C++" ARCANE_CORE_EXPORT
69+
void markVariableAsMostlyReadOnly(::Arcane::Materials::MeshMaterialVariableRef& var);
70+
4771
/*---------------------------------------------------------------------------*/
4872
/*---------------------------------------------------------------------------*/
4973

0 commit comments

Comments
 (0)