14#include "arcane/utils/StdHeader.h"
15#include "arcane/utils/PlatformUtils.h"
16#include "arcane/utils/Iostream.h"
17#include "arcane/utils/ScopedPtr.h"
18#include "arcane/utils/VersionInfo.h"
19#include "arcane/utils/StringBuilder.h"
20#include "arcane/utils/ITraceMng.h"
21#include "arcane/utils/TraceAccessor.h"
22#include "arcane/utils/MemoryInfo.h"
23#include "arcane/utils/List.h"
24#include "arcane/utils/TraceAccessor2.h"
25#include "arcane/utils/ValueConvert.h"
26#include "arcane/utils/IProcessorAffinityService.h"
27#include "arcane/utils/IProfilingService.h"
28#include "arccore/common/internal/Property.h"
30#include "arcane/core/ISubDomain.h"
31#include "arcane/core/IVariableMng.h"
32#include "arcane/core/IModuleMng.h"
33#include "arcane/core/IServiceMng.h"
34#include "arcane/core/IModule.h"
35#include "arcane/core/IModuleMaster.h"
36#include "arcane/core/IEntryPointMng.h"
37#include "arcane/core/IEntryPoint.h"
38#include "arcane/core/IMeshReader.h"
39#include "arcane/core/ITimerMng.h"
40#include "arcane/core/IApplication.h"
41#include "arcane/core/IGhostLayerMng.h"
42#include "arcane/core/ArcaneException.h"
43#include "arcane/core/CaseOptionsMain.h"
44#include "arcane/core/IMesh.h"
45#include "arcane/core/IMeshModifier.h"
46#include "arcane/core/IMeshSubMeshTransition.h"
47#include "arcane/core/Properties.h"
48#include "arcane/core/IParallelMng.h"
49#include "arcane/core/Directory.h"
50#include "arcane/core/ITimeHistoryMng.h"
51#include "arcane/core/ICaseMng.h"
52#include "arcane/core/ICheckpointMng.h"
53#include "arcane/core/IPropertyMng.h"
54#include "arcane/core/ITimeStats.h"
55#include "arcane/core/ITimeLoop.h"
56#include "arcane/core/ITimeLoopMng.h"
57#include "arcane/core/IIOMng.h"
58#include "arcane/core/IMainFactory.h"
59#include "arcane/core/Timer.h"
60#include "arcane/core/XmlNode.h"
61#include "arcane/core/ICaseDocument.h"
62#include "arcane/core/IPhysicalUnitSystem.h"
63#include "arcane/core/IPhysicalUnitSystemService.h"
64#include "arcane/core/ISession.h"
65#include "arcane/core/IMeshStats.h"
66#include "arcane/core/IParallelReplication.h"
67#include "arcane/core/IServiceLoader.h"
68#include "arcane/core/IMeshPartitioner.h"
69#include "arcane/core/ICaseMeshMasterService.h"
70#include "arcane/core/ILoadBalanceMng.h"
71#include "arcane/core/CaseNodeNames.h"
72#include "arcane/core/Observable.h"
73#include "arcane/core/VariableCollection.h"
74#include "arcane/core/SubDomainBuildInfo.h"
75#include "arcane/core/ServiceBuilder.h"
76#include "arcane/core/IMeshUtilities.h"
77#include "arcane/core/IMeshMng.h"
78#include "arcane/core/MeshHandle.h"
79#include "arcane/core/ObserverPool.h"
80#include "arcane/core/parallel/IStat.h"
82#include "arcane/core/internal/ConfigurationPropertyReader.h"
83#include "arcane/core/internal/IDataInternal.h"
84#include "arcane/core/internal/ICaseMngInternal.h"
85#include "arcane/core/internal/IParallelMngInternal.h"
86#include "arcane/core/internal/IVariableMngInternal.h"
88#include "arcane/impl/ConfigurationReader.h"
89#include "arcane/impl/internal/MeshMng.h"
90#include "arcane/impl/internal/LegacyMeshBuilder.h"
92#include "arcane/CaseOptionService.h"
93#include "arcane/CaseOptionBuildInfo.h"
95#include "arcane/accelerator/core/IAcceleratorMng.h"
96#include "arcane/accelerator/core/DeviceInfo.h"
97#include "arcane/accelerator/core/Runner.h"
98#include "arcane/accelerator/core/AcceleratorRuntimeInitialisationInfo.h"
99#include "arcane/accelerator/core/IDeviceInfoList.h"
110class MeshBuilderMaster
117 m_mesh_service.addAlternativeNodeName(
"fr",
"maillages");
122 return m_case_options->configList();
125 ICaseOptions* options()
const {
return m_case_options.get(); }
129 m_mesh_service.instance()->createMeshes();
147 ARCANE_DECLARE_PROPERTY_CLASS(SubDomain);
152 class PropertyMngCheckpoint
156 explicit PropertyMngCheckpoint(
ISubDomain* sd)
165 m_observers.addObserver(
this,
166 &PropertyMngCheckpoint::_notifyWrite,
167 m_property_values.variable()->writeObservable());
168 m_observers.addObserver(
this,
169 &PropertyMngCheckpoint::_notifyRead,
170 m_property_values.variable()->readObservable());
175 info(4) <<
"PropertyMngCheckpoint: READ";
176 m_sub_domain->propertyMng()->readFrom(m_property_values);
180 info(4) <<
"PropertyMngCheckpoint: WRITE";
181 m_sub_domain->propertyMng()->writeTo(m_property_values._internalTrueData()->_internalDeprecatedValue());
182 m_property_values.variable()->syncReferences();
196 void build()
override;
198 void destroy()
override;
237 void dumpInfo(std::ostream&)
override;
242 IMesh*
mesh()
override {
return m_default_mesh_handle.
mesh(); }
243 IMesh*
findMesh(
const String& name,
bool throw_exception)
override;
257 m_legacy_mesh_builder->m_initial_partitioner = partitioner;
287 void _setLegacyMeshCreation(
bool v){ m_is_create_default_mesh_v2 = !v; }
288 bool isLegacyMeshCreation()
const {
return !m_is_create_default_mesh_v2; }
294 const char* _msgClassName()
const {
return "Init"; }
334 bool m_is_create_default_mesh_v2;
345 void _doInitialPartition();
346 void _doInitialPartitionForMesh(
IMesh* mesh,
const String& service_name);
347 void _notifyWriteCheckpoint();
355static ISubDomain* global_sub_domain =
nullptr;
359extern "C" ARCANE_IMPL_EXPORT
ISubDomain* _arcaneGetDefaultSubDomain()
361 return global_sub_domain;
367extern "C++" ISubDomain*
368arcaneCreateSubDomain(ISession* session,
const SubDomainBuildInfo& sdbi)
371 Ref<IParallelMng> all_replica_pm = sdbi.allReplicaParallelMng();
372 String case_file_name = sdbi.caseFileName();
375 ITraceMng* tm = pm->traceMng();
376 StringBuilder trace_id;
377 trace_id += String::fromNumber(pm->commRank());
378 if (all_replica_pm!=pm){
380 trace_id += pm->replication()->replicationRank();
384 tm->setTraceId(trace_id.toString());
386 auto* sd =
new SubDomain(session,pm,all_replica_pm,case_file_name,bytes);
390 global_sub_domain = sd;
400: TraceAccessor2(pm->traceMng())
402, m_application(session->application())
404, m_all_replica_parallel_mng(all_replica_pm)
405, m_timer_mng(nullptr)
406, m_time_stats(nullptr)
407, m_namespace_uri(arcaneNamespaceURI())
408, m_module_master(nullptr)
409, m_time_history_mng(nullptr)
410, m_is_initialized(false)
411, m_case_full_file_name(case_file_name)
412, m_case_name(
"unknown")
414, m_case_config(nullptr)
415, m_storage_directory(
".")
416, m_is_continue(false)
417, m_direct_execution(nullptr)
418, m_is_create_default_mesh_v2(false)
420 m_local_name =
"SubDomain";
439 m_default_mesh_handle = m_mesh_mng->createDefaultMeshHandle(
"Mesh0");
467 _setDefaultAcceleratorDevice(config);
469 m_accelerator_mng->initialize(config);
470 Runner runner = m_accelerator_mng->runner();
471 const auto& device_info = runner.
deviceInfo();
472 info() <<
"DeviceInfo: name=" << device_info.name();
473 info() <<
"DeviceInfo: description=" << device_info.description();
479 m_variable_mng->_internalApi()->setAcceleratorMng(m_accelerator_mng);
513 if (!meshes_elem.
null()){
514 info() <<
"Using mesh service to create and allocate meshes";
522 if (!m_is_create_default_mesh_v2)
523 m_legacy_mesh_builder->createDefaultMesh();
526 service_loader->loadSubDomainServices(
this);
533 service_loader->initializeModuleFactories(
this);
538 m_observers.addObserver(
this,
539 &SubDomain::_notifyWriteCheckpoint,
563 Int32 modulo_device = 0;
565 Int32 nb_device = device_list->nbDevice();
566 info() <<
"DeviceInfo: nb_device=" << nb_device;
567 modulo_device = nb_device;
572 Int32 modulo = v.value();
575 modulo_device = modulo;
576 info() <<
"Use commRank() to choose accelerator device with modulo=" << modulo;
578 if (modulo_device!=0){
580 info() <<
"Using device number=" << device_rank;
581 config.
setDeviceId(Accelerator::DeviceId(device_rank));
591 m_case_mesh_master_service.reset();
593 m_property_mng_checkpoint =
nullptr;
610 bool do_return =
true;
625 m_mesh_mng->destroyMeshes();
668 info() <<
"SubDomain: Allocating meshes";
675 info() <<
"** Reading mesh from mesh service";
677 String default_service_name =
"ArcaneCaseMeshMasterService";
683 m_case_mesh_master_service = mbm;
684 m_case_mng->_internalImpl()->internalReadOneOption(mbm->_options(),
true);
688 if (m_is_create_default_mesh_v2)
689 m_legacy_mesh_builder->createDefaultMesh();
691 m_legacy_mesh_builder->allocateMeshes();
701 info() <<
"SubDomain: read or reload meshes";
703 logdate() <<
"Initialisation du code.";
705 Integer nb_mesh = m_mesh_mng->meshes().size();
706 info() <<
" nb_mesh_created=" << nb_mesh
707 <<
" is_continue?=" << m_is_continue;
709 A_INFO(
"Test: {1}",A_TR2(
"nb_mesh_created",nb_mesh),A_TR(m_is_continue));
728 for(
Integer z=0; z<nb_mesh; ++z ){
735 m_case_mesh_master_service->allocateMeshes();
738 m_legacy_mesh_builder->readMeshes();
748 for(
Integer z=0; z<nb_mesh; ++z ){
749 IMesh* mesh = m_mesh_mng->getMesh(z);
751 mesh->nodesCoordinates().setUpToDate();
761 m_mesh_mng->addMesh(mesh);
770 return m_mesh_mng->meshes();
780 m_legacy_mesh_builder->initializeMeshVariablesFromCaseFile();
792 info() <<
"Using custom initial partitioner";
796 if (m_case_mesh_master_service.get()){
797 m_case_mesh_master_service->partitionMeshes();
798 m_case_mesh_master_service->applyAdditionalOperationsOnMeshes();
801 if (m_legacy_mesh_builder->m_use_internal_mesh_partitioner)
802 _doInitialPartition();
807 for (
IMesh* mesh : m_mesh_mng->meshes()) {
833 String test_service =
"MeshPartitionerTester";
835 for(
IMesh*
mesh : m_mesh_mng->meshes() ){
836 bool is_mesh_allocated =
mesh->isAllocated();
837 info() <<
"InitialPartitioning mesh=" <<
mesh->name() <<
" is_allocated?=" << is_mesh_allocated;
838 if (!is_mesh_allocated)
844 if (m_legacy_mesh_builder->m_use_partitioner_tester) {
847 info() <<
"Min nb cell=" << min_nb_cell;
849 _doInitialPartitionForMesh(
mesh, test_service);
851 info() <<
"Mesh name=" <<
mesh->name() <<
" have cells. Do not use " << test_service;
854 info() <<
"No basic partition first needed";
855 _doInitialPartitionForMesh(mesh, m_legacy_mesh_builder->m_internal_partitioner_name);
865 info() <<
"DoInitialPartition. mesh=" << mesh->name() <<
" service=" << service_name;
867 String lib_name = service_name;
868 IMeshPartitionerBase* mesh_partitioner_base =
nullptr;
869 Ref<IMeshPartitionerBase> mesh_partitioner_base_ref;
870 Ref<IMeshPartitioner> mesh_partitioner_ref;
872 ServiceBuilder<IMeshPartitionerBase> sbuilder(
this);
873 mesh_partitioner_base_ref = sbuilder.createReference(service_name,mesh,
SB_AllowNull);
874 mesh_partitioner_base = mesh_partitioner_base_ref.get();
876 if (!mesh_partitioner_base){
879 pwarning() <<
"No implementation for 'IMeshPartitionerBase' interface found. "
880 <<
"Searching implementation for legacy 'IMeshPartitioner' interface";
881 ServiceBuilder<IMeshPartitioner> sbuilder_legacy(
this);
882 mesh_partitioner_ref = sbuilder_legacy.createReference(service_name,mesh,
SB_AllowNull);
883 if (mesh_partitioner_ref.get())
884 mesh_partitioner_base = mesh_partitioner_ref.get();
887 if (!mesh_partitioner_base){
890 sbuilder.getServicesNames(valid_names);
891 String valid_values = String::join(
", ",valid_names);
892 String msg = String::format(
"The specified service for the initial mesh partitionment ({0}) "
893 "is not available (valid_values={1}). This service has to implement "
894 "interface Arcane::IMeshPartitionerBase",
895 lib_name,valid_values);
899 bool is_dynamic = mesh->isDynamic();
900 mesh->modifier()->setDynamic(
true);
901 mesh->utilities()->partitionAndExchangeMeshWithReplication(mesh_partitioner_base,
true);
902 mesh->modifier()->setDynamic(is_dynamic);
914 logdate() <<
"Execution of the end of compute entry points";
933 Int64 len =
id.length();
934 const char* str =
id.localstr();
938 if (!isalpha(str[0]))
940 for(
Int64 i=1; i<len; ++i )
941 if (!isalpha(str[i]) && !isdigit(str[i]) && str[i] !=
'_' && str[i] !=
'.' && str[i] !=
'-')
959 m_legacy_mesh_builder->readCaseMeshes();
984 XmlElement time_loop_elem(root,
"timeloopinfo");
988 String ustr_userclass(
"userclass");
990 XmlElement elem(time_loop_elem,ustr_userclass,*j);
996 String ustr_module(
"module");
998 String ustr_activated(
"activated");
1000 String ustr_false(
"false");
1001 String ustr_variable(
"variable");
1002 String ustr_variable_ref(
"variable-ref");
1004 String ustr_datatype(
"datatype");
1005 String ustr_dimension(
"dimension");
1006 String ustr_kind(
"kind");
1007 String ustr_caseblock(
"caseblock");
1008 String ustr_tagname(
"tagname");
1012 XmlElement module_element(modules,ustr_module);
1014 bool is_activated = (*i)->used();
1015 module_element.
setAttrValue(ustr_activated,is_activated ? ustr_true : ustr_false);
1016 var_ref_list.
clear();
1019 XmlElement variable_element(module_element,ustr_variable_ref);
1027 for( VariableCollection::Enumerator j(var_prv_list); ++j; ){
1043 XmlElement block_elem(blocks_elem,ustr_caseblock);
1057 return m_default_mesh_handle.mesh()->dimension();
1066 return m_mesh_mng->findMesh(name,throw_exception);
1073_notifyWriteCheckpoint()
1075 info(4) <<
"SubDomain::_notifyWriteCheckpoint()";
1078 timeStats()->saveTimeValues(&time_stats_properties);
1081 Properties p(
propertyMng(),
"MessagePassingStats");
1093 info(4) <<
"SubDomain::setIsInitialized()";
1096 timeStats()->mergeTimeValues(&time_stats_properties);
1114 bool do_print_affinity =
false;
1116 do_print_affinity = (v.value()>0);
1117 if (!do_print_affinity)
1119 info() <<
"PrintCPUAffinity";
1126 const Int32 nb_byte = 48;
1129 cpuset_bytes = cpuset.
bytes();
1132 cpuset_bytes[nb_byte-1] =
Byte{0};
1140 all_cpuset_bytes.
resize(nb_rank,nb_byte);
1143 for(
Int32 i=0; i<nb_rank; ++i ){
1144 info() <<
"CPUAffinity " <<
Trace::Width(5) << i <<
" = " << all_cpuset_bytes[i].data();
1154template<
typename V>
void SubDomain::
1155_applyPropertyVisitor(V& p)
1157 auto b = p.builder();
1159 p << b.addBool(
"LegacyMeshCreation")
1160 .addDescription(
"Using legacy mesh creation")
1161 .addGetter([](
auto a) {
return a.x.isLegacyMeshCreation(); })
1162 .addSetter([](
auto a) { a.x._setLegacyMeshCreation(a.v); });
1168ARCANE_REGISTER_PROPERTY_CLASS(
SubDomain,());
#define ARCANE_THROW(exception_class,...)
Macro pour envoyer une exception avec formattage.
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Informations pour l'initialisation des accélérateurs.
eExecutionPolicy executionPolicy() const
Politique d'exécution associée à acceleratorRuntime().
void setDeviceId(DeviceId name)
Positionne le device associé au Runner associé.
Interface du gestionnaire des accélérateurs.
Gestionnaire d'exécution pour accélérateur.
const DeviceInfo & deviceInfo() const
Information sur le device associé à cette instance.
eExecutionPolicy executionPolicy() const
Politique d'exécution associée.
Informations sur une application.
ArrayView< DataType > viewAsArray()
Vue du tableau sous forme de tableau 1D.
void resize(Integer size)
Redimensionnement de la deuxième dimension du tableau.
void resize(Int64 s)
Change le nombre d'éléments du tableau à s.
Exception sur un identifiant non valide.
Exception lorsqu'on essaie de déréférencer un pointer nul.
Noms des noeuds XML d'un jeu de données Arcane.
Informations pour construire une option de jeu de données.
Classe de base d'une liste d'options du jeu de données.
void clear()
Supprime tous les éléments de la collection.
EnumeratorT< String > Enumerator
Variables communes d'un cas.
Lecteurs de fichiers de configuration.
void addValuesFromXmlNode(const XmlNode &element, Integer priority)
Ajoute des valeurs à la configuration.
Vue constante d'un tableau de type T.
static std::optional< Int32 > tryParseFromEnvironment(StringView s, bool throw_if_invalid)
Classe template pour convertir un type.
Classe gérant un répertoire.
Interface de l'application.
virtual const AcceleratorRuntimeInitialisationInfo & acceleratorRuntimeInitialisationInfo() const =0
Informations d'initialisation du runtime pour les accélérateurs.
Interface de la classe de base des objets principaux arcane.
virtual ITraceMng * traceMng() const =0
Gestionnaire de traces.
Interface d'une classe gérant un document XML du jeu de données.
virtual XmlNode configurationElement()=0
Retourne l'élément des informations de configuration.
virtual XmlNode meshesElement()=0
Elément contenant la liste des maillages (nouveau mécanisme) (peut être nul).
virtual CaseNodeNames * caseNodeNames()=0
Retourne l'instance contenant les noms des noeuds XML par langage.
Interface du gestionnaire de cas.
virtual CaseOptionsCollection blocks() const =0
Collection des blocs d'options.
virtual ICaseDocument * caseDocument()=0
Document XML du jeu de données (peut être nul si pas de jeu de donneés).
Interface d'une liste d'options du jeu de données.
Interface d'une liste d'options du jeu de données.
virtual IModule * caseModule() const =0
Retourne le module associé ou nullptr s'il n'y en a pas.
virtual String rootTagName() const =0
Nom de l'élément dans le langage du jeu de données.
Interface du gestionnaire des informations des protections.
Interface d'une configuration.
Interface d'un service d'exécution direct.
Interface d'une classe gérant un répertoire.
Interface du gestionnaire de point d'entrée.
Interface du gestionnaire des entrées sorties.
Interface d'un partitionneur initial.
virtual void partitionAndDistributeMeshes(ConstArrayView< IMesh * > meshes)=0
Partitionne les maillages.
Interface d'enregistrement des variables pour l'equilibrage de charge.
Manufacture des classes d'Arcane.
virtual Ref< IPropertyMng > createPropertyMngReference(ISubDomain *)=0
Crée une instance du gestionnaire de propriétés.
virtual IServiceMng * createServiceMng(IBase *)=0
Crée une instance du gestionnaire de services.
virtual IEntryPointMng * createEntryPointMng(ISubDomain *)=0
Crée une instance du gestionnaire des points d'entrée.
virtual ICheckpointMng * createCheckpointMng(ISubDomain *)=0
Crée une instance du gestionnaire de protections.
virtual ITimeLoopMng * createTimeLoopMng(ISubDomain *)=0
Crée une instance du gestionnaire de la boucle en temps.
virtual ITimeHistoryMng * createTimeHistoryMng(ISubDomain *)=0
Crée une instance du gestionnaire d'historique en temps.
virtual IServiceLoader * createServiceLoader()=0
Crée une instance du chargeur de services.
virtual ILoadBalanceMng * createLoadBalanceMng(ISubDomain *sd)=0
Cree un gestionnaire de description pour l'equilibrage.
virtual ICaseMng * createCaseMng(ISubDomain *)=0
Crée une instance du gestionnaire du jeu de données.
virtual IModuleMng * createModuleMng(ISubDomain *)=0
Crée une instance du gestionnaire de module.
virtual IVariableMng * createVariableMng(ISubDomain *)=0
Crée une instance du gestionnaire de variable.
virtual IModuleMaster * createModuleMaster(ISubDomain *sd)=0
Créé le module maitre pour le sous-domaine sd.
virtual Ref< IAcceleratorMng > createAcceleratorMngRef(ITraceMng *tm)=0
Créé un gestionnaire pour les accélérateurs.
virtual IIOMng * createIOMng(IApplication *)=0
Crée une instance du gestionnaire d'entrée/sortie.
Interface d'un collecteur d'informations sur l'usage mémoire.
Interface du gestionnaire des maillages.
virtual void checkValidMesh()=0
Vérification de la validité des structues internes de maillage (interne).
Interface du module principal.
Interface du gestionnaire de modules.
virtual String name() const =0
Nom du module.
Interface d'un observable.
Interface du gestionnaire de parallélisme pour un sous-domaine.
virtual IStat * stat()=0
Gestionnaire des statistiques.
virtual bool isMasterIO() const =0
true si l'instance est un gestionnaire maître des entrées/sorties.
virtual Int32 commSize() const =0
Nombre d'instance dans le communicateur.
virtual void gather(ConstArrayView< char > send_buf, ArrayView< char > recv_buf, Int32 rank)=0
Effectue un regroupement sur un processeurs. Il s'agit d'une opération collective....
virtual Integer masterIORank() const =0
Rang de l'instance gérant les entrées/sorties (pour laquelle isMasterIO() est vrai).
virtual char reduce(eReduceType rt, char v)=0
Effectue la réduction de type rt sur le réel v et retourne la valeur.
Interface d'un système d'unité.
virtual void reloadMesh()=0
Recharge le maillage à partir des variables protégées.
Interface d'un service de gestion de l'affinité des coeurs CPU.
virtual String cpuSetString()=0
Retourne le cpuset pour le thread courant.
Interface d'un service de profiling.
virtual bool isRunning() const =0
Indique si le profiling est en cours.
virtual void stopProfiling()=0
Stoppe le profiling.
Interface du gestionnaire des propriétés.
Interface d'un gestionnaire de ressource.
Interface du gestionnaire de services.
Interface d'une session d'exécution d'un cas.
Interface du gestionnaire d'un sous-domaine.
virtual IParallelMng * parallelMng()=0
Retourne le gestionnaire de parallélisme.
Interface d'un gestionnaire de thread.
Classe gérant un historique de valeurs.
Interface du gestionnaire de la boucle en temps.
virtual ITimeLoop * usedTimeLoop() const =0
Retourne la boucle en temps utilisée.
Interface d'une boucle en temps.
virtual String title() const =0
Titre de la boucle en temps.
virtual String description() const =0
Description de la boucle en temps.
virtual StringCollection userClasses() const =0
Liste des classes utilisateurs associées à la boucle en temps.
Interface gérant les statistiques sur les temps d'exécution.
Interface d'un gestionnaire de timer.
Interface du gestionnaire de traces.
virtual void flush()=0
Flush tous les flots.
Interface du gestionnaire de variables.
virtual void variables(VariableRefCollection v, IModule *i)=0
Donne l'ensemble des variables du module i.
Interface d'une variable.
virtual eDataType dataType() const =0
Type de la donnée gérée par la variable (Real, Integer, ...).
@ PPrivate
Indique que la variable est privée.
virtual eItemKind itemKind() const =0
Genre des entités du maillage sur lequel repose la variable.
virtual Integer dimension() const =0
Dimension de la variable.
virtual String name() const =0
Nom de la variable.
Construction du maillage via la méthode "historique".
ListEnumeratorT< VariableRef * > Enumerator
IMesh * mesh() const
Maillage associé.
Classe de base d'un observable.
virtual void saveValues(ITraceMng *tm, Properties *p)=0
Sauve les valeurs actuelles dans p.
virtual void mergeValues(ITraceMng *tm, Properties *p)=0
Fusionne les valeurs actuelles avec celles sauvées dans p.
Classe permettant de démarrer et arrêter automatiquement un service.
void setPrintAtEnd(bool v)
Indique si on imprime les résultats à la fin du profiling.
Référence à une instance.
Encapsulation d'un pointeur avec compteur de référence.
static const IDeviceInfoList * deviceInfoList(eExecutionPolicy policy)
Liste des devices pour la politique d'exécution policy.
Encapsulation d'un pointeur qui se détruit automatiquement.
Classe utilitaire pour instantier un service d'une interface donnée.
Ref< InterfaceType > createReference(const String &name, eServiceBuilderProperties properties=SB_None)
Créé une instance implémentant l'interface InterfaceType.
Chaîne de caractères unicode.
Span< const Byte > bytes() const
Retourne la conversion de l'instance dans l'encodage UTF-8.
Classe pour gérer la lecture/écriture des propriétés dans les protections/reprises.
Implémentation d'un gestionnaire de sous-domaine.
void readOrReloadMeshes() override
Lit ou relit les maillages.
IParallelMng * allReplicaParallelMng() const override
Retourne le gestionnaire de parallélisme pour tous les réplicats.
String objectLocalName() const override
Nom local de l'objet.
IPhysicalUnitSystem * physicalUnitSystem() override
Système d'unité du sous-domaine.
String m_case_name
Nom du cas.
IModuleMng * moduleMng() override
Retourne le gestionnaire de modules.
IThreadMng * threadMng() override
Retourne le gestionnaire de thread.
IParallelMng * parallelMng() override
Retourne le gestionnaire de parallélisme.
Observable m_on_destroy_observable
Observable lors d'une destruction.
const String & caseName() const override
Nom du cas.
void setListingDirectory(const IDirectory &dir) override
Positionne le chemin de sortie des infos listing.
Ref< ICaseMng > m_case_mng
Gestionnaire du jeu de données.
IEntryPointMng * entryPointMng() override
Retourne le gestionnaire de points d'entrée.
ILoadBalanceMng * loadBalanceMng() override
Retourne le gestionnaire d'équilibrage de charge.
ISession * m_session
Session.
IBase * objectParent() const override
Parent de cet objet.
void setIsContinue() override
Positionne un flag indiquant qu'on effectue une reprise.
const String & caseFullFileName() const override
Chemin complet du fichier contenant le jeu de données.
void doInitModules() override
Appelle les points d'entrée d'initialisation du module.
IConfiguration * configuration() override
Configuration associée.
ICaseDocument * caseDocument() override
Document XML du cas.
IServiceMng * serviceMng() const override
Gestionnaire de services.
Ref< IParallelMng > m_all_replica_parallel_mng
Gestionnaire du parallélisme pour tous les réplicats.
IIOMng * ioMng() override
Retourne le gestionnaire des entrées/sorties.
void setInitialPartitioner(IInitialPartitioner *partitioner) override
Positionne le partitionneur initial.
const CommonVariables & commonVariables() const override
Informations sur les variables standards.
void setStorageDirectory(const IDirectory &dir) override
Positionne le chemin de sortie des exportations nécessitant un archivage.
void build() override
Construit les membres de l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas é...
bool m_has_mesh_service
Indique si on utilise le mécanisme de service pour lire le maillage.
ITimeHistoryMng * timeHistoryMng() override
Retourne le gestionnaire d'historique.
IMemoryInfo * memoryInfo() const override
Gestionnaire d'informations mémoire.
bool m_is_initialized
true si initialisé
String m_case_full_file_name
Chemin d'accès du cas.
const IDirectory & exportDirectory() const override
Répertoire de base des exportations.
void dumpInfo(std::ostream &) override
Affiche des informations sur l'instance.
void fillCaseBytes(ByteArray &bytes) const override
Remplit bytes avec le contenue du jeu de données.
IModuleMaster * moduleMaster() const override
Interface du module maître.
ScopedPtrT< ILoadBalanceMng > m_lb_mng
Gestionnaire de caracteristiques pour l'equilibrage.
IVariableMng * variableMng() override
Retourne le gestionnaire de variables.
ScopedPtrT< IModuleMng > m_module_mng
Gestionnaire des modules.
const IDirectory & storageDirectory() const override
Répertoire de base des exportations nécessitant un archivage.
Int32 subDomainId() const override
Numéro du sous-domaine associé à ce gestionnaire.
Ref< IPropertyMng > m_property_mng
Gestionnaire de propriétés.
IMeshMng * meshMng() const override
Retourne le gestionnaire de maillage.
void addMesh(IMesh *mesh) override
Ajoute un maillage au sous-domaine.
void _printCPUAffinity()
Affiche l'affinité CPU de tous les rangs.
CaseOptionsMain * m_case_config
Config du cas.
void dumpInternalInfos(XmlNode &root) override
Sort les informations internes de l'architecture. Les informations sont stockées dans un arbre XML ay...
IApplication * m_application
Gestionnaire principal.
void allocateMeshes() override
Allocation des maillages.
IObservable * onDestroyObservable() override
Notification avant destruction du sous-domaine.
ByteUniqueArray m_case_bytes
Données du cas.
void doInitMeshPartition() override
Applique le partitionnement de maillage de l'initialisation.
ITimerMng * timerMng() const override
Retourne le gestionnaire de timers.
VersionInfo objectVersion() const override
Numéro de version du service.
ICaseMng * caseMng() override
Retourne le gestionnaire du jeu de données.
Ref< IParallelMng > m_parallel_mng
Gestionnaire du parallélisme.
ConstArrayView< IMesh * > meshes() const override
Listes des maillages du sous-domaine.
ScopedPtrT< IPhysicalUnitSystem > m_physical_unit_system
Système d'unité physique.
const IDirectory & listingDirectory() const override
Répertoire de base des listings (logs, info exécution).
void setExportDirectory(const IDirectory &dir) override
Positionne le chemin de sortie des exportations (protections et reprises).
void setIsInitialized() override
Indique que le sous-domaine est initialié.
ScopedPtrT< IEntryPointMng > m_entry_point_mng
Gestionnaire des points d'entrée.
const IConfiguration * configuration() const override
Configuration associée.
ScopedPtrT< IServiceMng > m_service_mng
Gestionnaire des services.
IModuleMaster * m_module_master
Module maitre.
ScopedPtrT< ITimeHistoryMng > m_time_history_mng
Gestionnaire d'historique.
IDirectExecution * directExecution() const override
Service d'exécution directe (ou null).
const MeshHandle & defaultMeshHandle() override
Handle sur le maillage par défaut.
ScopedPtrT< IVariableMng > m_variable_mng
Gestionnaire des variables.
void readCaseMeshes() override
Lit les informations de maillage du jeu de données.
ScopedPtrT< ICheckpointMng > m_checkpoint_mng
Gestionnaire de protections.
Integer meshDimension() const override
Dimension du maillage (1D, 2D ou 3D).
void initialize() override
Initialise l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas été appelée.
void doExitModules() override
Exécution des modules de fin d'exécution.
Directory m_export_directory
Répertoire d'exportation.
const CaseOptionsMain * caseOptionsMain() const override
Options générales du jeu de donnée.
ITimeStats * m_time_stats
Statistiques sur les temps d'exécution.
ISession * session() const override
Session.
String objectNamespaceURI() const override
Namespace de l'objet.
ScopedPtrT< IMemoryInfo > m_memory_info
Informations sur l'utilisation mémoire.
void setCaseName(const String &case_name) override
Positionne le nom du cas.
bool isContinue() const override
Vrai si on effectue une reprise, faux sinon.
IMainFactory * mainFactory() override
Manufacture principale.
ICheckpointMng * checkpointMng() const override
Gestionnaire de protections.
IRessourceMng * ressourceMng() const override
Gestionnaire de ressources.
IPropertyMng * propertyMng() const override
Gestionnaire de propriétés.
ScopedPtrT< IConfiguration > m_configuration
Configuration.
ITimeLoopMng * timeLoopMng() override
Retourne le gestionnaire de la boucle en temps.
void checkId(const String &where, const String &id) override
Vérifie qu'un identifiant est valide.
Directory m_listing_directory
Répertoire des listings.
IApplication * application() override
Application.
ScopedPtrT< ITimeLoopMng > m_time_loop_mng
Gestionnaire de la boucle en temps.
Directory m_storage_directory
Répertoire d'archivage.
ITimerMng * m_timer_mng
Gestionnaire des timers.
ITraceMng * traceMng() const override
Gestionnaire de traces.
ITimeStats * timeStats() const override
Statistiques des temps d'exécution.
IMesh * defaultMesh() override
Maillage par défaut.
void initializeMeshVariablesFromCaseFile() override
Initialise les variables dont les valeurs sont spécifiées dans le jeu de données.
void setDirectExecution(IDirectExecution *v) override
Positionne le service d'exécution directe.
bool isInitialized() const override
Indique si la session a été initialisée.
Int32 nbSubDomain() const override
Nombre total de sous-domaines.
IAcceleratorMng * acceleratorMng() override
Gestionnaire de l'accélérateur associé
IMesh * findMesh(const String &name, bool throw_exception) override
Recherche le maillage de nom name.
const ApplicationInfo & applicationInfo() const override
Informations sur l'exécutable.
ScopedPtrT< IIOMng > m_io_mng
Gestionnaire des entrées/sorties.
Postionne le nom de l'action en cours d'exécution.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
TraceMessage logdate() const
Flot pour un message de log précédé de la date.
TraceMessage info() const
Flot pour un message d'information.
ITraceMng * traceMng() const
Gestionnaire de trace.
TraceMessage pwarning() const
Positionne une classe de message.
Formattage du flot en longueur.
Vecteur de données 2D avec sémantique par valeur (style STL).
Vecteur 1D de données avec sémantique par valeur (style STL).
Paramètres nécessaires à la construction d'une variable.
Informations sur une version.
bool null() const
Vrai si le noeud est nul.
void setAttrValue(const String &name, const String &value)
Positionne l'attribut name à la valeur value.
API EN COURS DE CONCEPTION. NE PAS UTILISER.
VariableRefArrayT< Byte > VariableArrayByte
Variable tableau de type byte.
Espace de nom pour l'utilisation des accélérateurs.
bool isAcceleratorPolicy(eExecutionPolicy exec_policy)
Indique si exec_policy correspond à un accélérateur.
void dumpDateAndMemoryUsage(IParallelMng *pm, ITraceMng *tm)
Écrit dans tm la date et la mémoire consommée.
@ ReduceMin
Minimum des valeurs.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
@ SB_AllowNull
Autorise l'absence du service.
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
Array< Byte > ByteArray
Tableau dynamique à une dimension de caractères.
UniqueArray< Byte > ByteUniqueArray
Tableau dynamique à une dimension de caractères.
Collection< ICaseOptions * > CaseOptionsCollection
Collection d'options du jeu de données.
const char * itemKindName(eItemKind kind)
Nom du genre d'entité.
ConstArrayView< Byte > ByteConstArrayView
Equivalent C d'un tableau à une dimension de caractères.
unsigned char Byte
Type d'un octet.
UniqueArray< String > StringUniqueArray
Tableau dynamique à une dimension de chaînes de caractères.
List< VariableRef * > VariableRefList
Tableau de références de variables.
const char * dataTypeName(eDataType type)
Nom du type de donnée.
std::int32_t Int32
Type entier signé sur 32 bits.