14#include "arcane/core/ApplicationBuildInfo.h"
16#include "arcane/utils/PlatformUtils.h"
17#include "arcane/utils/String.h"
18#include "arcane/utils/List.h"
19#include "arcane/utils/CommandLineArguments.h"
20#include "arcane/utils/TraceClassConfig.h"
21#include "arcane/utils/ApplicationInfo.h"
23#include "arcane/core/CaseDatasetSource.h"
25#include "arccore/common/internal/FieldProperty.h"
26#include "arccore/common/internal/ArccoreApplicationBuildInfoImpl.h"
43 x = std::min(std::max(x,min_value),max_value);
52 template <
typename T>
using FieldProperty = PropertyImpl::FieldProperty<T>;
57 : m_nb_shared_memory_sub_domain(0)
58 , m_nb_replication_sub_domain(0)
59 , m_nb_processus_sub_domain(0)
60 , m_config_file_name(
"")
65 m_nb_shared_memory_sub_domain.setValidator([](
Int32& x){ _clamp(x,0,1024); });
66 m_nb_replication_sub_domain.setValidator([](
Int32& x){ x = std::max(x,0); });
67 m_nb_processus_sub_domain.setValidator([](
Int32& x){ x = std::max(x,0); });
75 FieldProperty<String> m_message_passing_service;
76 FieldProperty<Int32> m_nb_shared_memory_sub_domain;
77 FieldProperty<Int32> m_nb_replication_sub_domain;
78 FieldProperty<Int32> m_nb_processus_sub_domain;
79 FieldProperty<String> m_config_file_name;
80 FieldProperty<Int32> m_output_level;
81 FieldProperty<Int32> m_verbosity_level;
82 FieldProperty<Int32> m_minimal_verbosity_level;
83 FieldProperty<bool> m_is_master_has_output_file;
84 FieldProperty<String> m_output_directory;
85 FieldProperty<String> m_thread_binding_strategy;
88 String m_default_message_passing_service;
104ApplicationBuildInfo::
107, m_p(new Impl(*rhs.m_p))
111ApplicationBuildInfo& ApplicationBuildInfo::
112operator=(
const ApplicationBuildInfo& rhs)
114 ArccoreApplicationBuildInfo::operator=(rhs);
117 m_p =
new Impl(*(rhs.m_p));
125ApplicationBuildInfo::
126~ApplicationBuildInfo()
134void ApplicationBuildInfo::
137 ArccoreApplicationBuildInfo::setDefaultValues();
139 String str = m_core->getValue({
"ARCANE_PARALLEL_SERVICE" },
"MessagePassingService", String());
141 String service_name = str +
"ParallelSuperMng";
142 PropertyImpl::checkSet(m_p->m_message_passing_service, service_name);
146 String str = m_core->getValue({
"ARCANE_NB_THREAD" },
"S", String());
147 PropertyImpl::checkSet(m_p->m_nb_shared_memory_sub_domain, str);
150 String str = m_core->getValue({
"ARCANE_NB_REPLICATION" },
"R", String());
151 PropertyImpl::checkSet(m_p->m_nb_replication_sub_domain, str);
154 String str = m_core->getValue({
"ARCANE_NB_SUB_DOMAIN" },
"P", String());
155 PropertyImpl::checkSet(m_p->m_nb_processus_sub_domain, str);
158 String str = m_core->getValue({
"ARCANE_OUTPUT_LEVEL" },
"OutputLevel",
159 String::fromNumber(Trace::UNSPECIFIED_VERBOSITY_LEVEL));
160 PropertyImpl::checkSet(m_p->m_output_level, str);
163 String str = m_core->getValue({
"ARCANE_VERBOSITY_LEVEL",
"ARCANE_VERBOSE_LEVEL" },
"VerbosityLevel",
164 String::fromNumber(Trace::UNSPECIFIED_VERBOSITY_LEVEL));
165 PropertyImpl::checkSet(m_p->m_verbosity_level, str);
168 String str = m_core->getValue({},
"MinimalVerbosityLevel",
169 String::fromNumber(Trace::UNSPECIFIED_VERBOSITY_LEVEL));
170 PropertyImpl::checkSet(m_p->m_minimal_verbosity_level, str);
173 String str = m_core->getValue({
"ARCANE_MASTER_HAS_OUTPUT_FILE" },
"MasterHasOutputFile",
"0");
174 PropertyImpl::checkSet(m_p->m_is_master_has_output_file, str);
177 String str = m_core->getValue({
"ARCANE_OUTPUT_DIRECTORY" },
"OutputDirectory",
179 PropertyImpl::checkSet(m_p->m_output_directory, str);
182 String str = m_core->getValue({},
"CaseDatasetFileName",
185 m_p->m_case_dataset_source.setFileName(str);
188 String str = m_core->getValue({
"ARCANE_THREAD_BINDING_STRATEGY" },
"ThreadBindingStrategy",
190 PropertyImpl::checkSet(m_p->m_thread_binding_strategy, str);
197void ArccoreApplicationBuildInfo::
201 String str = m_core->getValue({
"ARCANE_TASK_IMPLEMENTATION" },
"TaskService",
"TBB");
202 String service_name = str +
"TaskImplementation";
203 PropertyImpl::checkSet(m_core->m_task_implementation_services, service_name);
207 String thread_str = m_core->getValue({
"ARCANE_THREAD_IMPLEMENTATION" },
"ThreadService",
"Std");
208 list1.add(thread_str+
"ThreadImplementationService");
209 list1.add(
"TBBThreadImplementationService");
210 PropertyImpl::checkSet(m_core->m_thread_implementation_services, list1);
217void ApplicationBuildInfo::
220 ArccoreApplicationBuildInfo::setDefaultServices();
221 bool has_shm = nbSharedMemorySubDomain()>0;
223 String def_name = (has_shm) ?
"Thread" :
"Sequential";
224 String default_service_name = def_name+
"ParallelSuperMng";
226 if (m_p->m_default_message_passing_service.null())
227 m_p->m_default_message_passing_service = default_service_name;
234void ApplicationBuildInfo::
235setMessagePassingService(
const String& name)
237 m_p->m_message_passing_service = name;
240String ApplicationBuildInfo::
241messagePassingService()
const
243 return m_p->m_message_passing_service;
249void ArccoreApplicationBuildInfo::
250setTaskImplementationService(
const String& name)
254 m_core->m_task_implementation_services = s;
256void ArccoreApplicationBuildInfo::
257setTaskImplementationServices(
const StringList& names)
259 m_core->m_task_implementation_services = names;
262taskImplementationServices()
const
264 return m_core->m_task_implementation_services;
270void ArccoreApplicationBuildInfo::
271setThreadImplementationService(
const String& name)
275 m_core->m_thread_implementation_services = s;
277void ArccoreApplicationBuildInfo::
278setThreadImplementationServices(
const StringList& names)
280 m_core->m_thread_implementation_services = names;
283threadImplementationServices()
const
285 return m_core->m_thread_implementation_services;
291Int32 ArccoreApplicationBuildInfo::
294 return m_core->m_nb_task_thread;
300void ArccoreApplicationBuildInfo::
301setNbTaskThread(
Int32 v)
303 m_core->m_nb_task_thread = v;
309Int32 ApplicationBuildInfo::
310nbSharedMemorySubDomain()
const
312 return m_p->m_nb_shared_memory_sub_domain;
318void ApplicationBuildInfo::
319setNbSharedMemorySubDomain(
Int32 v)
321 m_p->m_nb_shared_memory_sub_domain = v;
327Int32 ApplicationBuildInfo::
328nbReplicationSubDomain()
const
330 return m_p->m_nb_replication_sub_domain;
336void ApplicationBuildInfo::
337setNbReplicationSubDomain(
Int32 v)
339 m_p->m_nb_replication_sub_domain = v;
345Int32 ApplicationBuildInfo::
346nbProcessusSubDomain()
const
348 return m_p->m_nb_processus_sub_domain;
354void ApplicationBuildInfo::
355setNbProcessusSubDomain(
Int32 v)
357 m_p->m_nb_processus_sub_domain = v;
366 return m_p->m_config_file_name;
375 m_p->m_config_file_name = v;
381Int32 ApplicationBuildInfo::
384 return m_p->m_output_level;
390 m_p->m_output_level = v;
396Int32 ApplicationBuildInfo::
397verbosityLevel()
const
399 return m_p->m_verbosity_level;
405 m_p->m_verbosity_level = v;
411Int32 ApplicationBuildInfo::
412minimalVerbosityLevel()
const
414 return m_p->m_minimal_verbosity_level;
417void ApplicationBuildInfo::
418setMinimalVerbosityLevel(Int32 v)
420 m_p->m_minimal_verbosity_level = v;
426bool ApplicationBuildInfo::
427isMasterHasOutputFile()
const
429 return m_p->m_is_master_has_output_file;
432void ApplicationBuildInfo::
433setIsMasterHasOutputFile(
bool v)
435 m_p->m_is_master_has_output_file = v;
441String ApplicationBuildInfo::
442outputDirectory()
const
444 return m_p->m_output_directory;
453 m_p->m_output_directory = v;
462 return m_p->m_thread_binding_strategy;
468 m_p->m_thread_binding_strategy = v;
474void ArccoreApplicationBuildInfo::
477 m_core->addKeyValue(name, value);
492 addParameter(names[i],values[i]);
501_internalApplicationInfo()
503 return m_p->m_app_info;
509const ApplicationInfo& ApplicationBuildInfo::
510_internalApplicationInfo()
const
512 return m_p->m_app_info;
526 return m_p->m_app_info.applicationName();
535 m_p->m_app_info.setCodeVersion(version_info);
541 return m_p->m_app_info.codeVersion();
550 m_p->m_app_info.setCodeName(code_name);
556 return m_p->m_app_info.codeName();
565 return m_p->m_case_dataset_source;
571 return m_p->m_case_dataset_source;
580 m_p->m_app_info.addDynamicLibrary(lib_name);
589 m_p->m_default_message_passing_service = name;
595String ApplicationBuildInfo::
596internalDefaultMessagePassingService()
const
598 return m_p->m_default_message_passing_service;
Informations pour construire une instance de IApplication.
void setVerbosityLevel(Int32 v)
Positionne le niveau de verbosité des messages des fichiers listings réduits.
void setOutputDirectory(const String &name)
Positionne le répertoire contenant les différentes sorties de la simulation.
VersionInfo codeVersion() const
Numéro de version.
void setOutputLevel(Int32 v)
Positionne le niveau de verbosité des messages sur la sortie standard.
String configFileName() const
Nom du fichier de configuration du code.
void addDynamicLibrary(const String &lib_name)
Ajoute la bibliothèque lib_name à la liste des bibliothèques chargées dynamiquements.
void internalSetDefaultMessagePassingService(const String &name)
Nom du gestionnaire de message par défaut. Ne doit être modifié que par Arcane.
void setCodeName(const String &code_name)
Positionne le nom du code.
String applicationName() const
Nom de l'application.
void setApplicationName(const String &v)
Positionne le nom de l'application.
String codeName() const
Retourne le nom du code.
CaseDatasetSource & caseDatasetSource()
Source du jeu de données.
void setConfigFileName(const String &name)
Positionne le fichier de configuration du code.
void setCodeVersion(const VersionInfo &version_info)
Positionne le numéro de version du code.
String threadBindingStrategy() const
Stratégie pour punaiser les threads des tâches.
Informations sur une application.
void setApplicationName(const String &v)
Positionne le nom de l'application.
Informations pour initialiser une application.
void parseArgumentsAndSetDefaultsValues(const CommandLineArguments &args)
Analyse les arguments de args.
Source d'un jeu de données d'un cas.
Integer count() const
Nombre d'éléments de la collection.
Arguments de la ligne de commande.
void fillParameters(StringList ¶m_names, StringList &values) const
Récupère la liste des paramètres et leur valeur.
Chaîne de caractères unicode.
Informations sur une version.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
List< String > StringList
Tableau de chaînes de caractères unicode.
std::int32_t Int32
Type entier signé sur 32 bits.