14#include "arcane/launcher/ArcaneLauncher.h"
16#include "arcane/launcher/IDirectExecutionContext.h"
17#include "arcane/launcher/DirectSubDomainExecutionContext.h"
19#include "arcane/utils/Property.h"
20#include "arcane/utils/FatalErrorException.h"
21#include "arcane/utils/JSONPropertyReader.h"
22#include "arcane/utils/ParameterListPropertyReader.h"
23#include "arcane/utils/PlatformUtils.h"
24#include "arcane/utils/JSONReader.h"
25#include "arcane/utils/Exception.h"
26#include "arcane/utils/ParameterList.h"
27#include "arcane/utils/Ref.h"
29#include "arcane/utils/internal/ParallelLoopOptionsProperties.h"
30#include "arcane/utils/internal/ApplicationInfoProperties.h"
32#include "arcane/impl/ArcaneMain.h"
33#include "arcane/impl/ArcaneSimpleExecutor.h"
35#include "arcane/IDirectSubDomainExecuteFunctor.h"
47bool global_has_init_done =
false;
48bool _checkInitCalled()
50 if (!global_has_init_done){
51 std::cerr <<
"ArcaneLauncher::init() has to be called before";
56bool global_has_standalone_sub_domain =
false;
78 ISubDomain* subDomain()
const {
return nullptr; }
80 ArcaneSimpleExecutor* m_simple_exec;
87_checkReadConfigFile(StringView config_file_name)
90 if (config_file_name.empty())
92 std::cout <<
"TRY_READING_CONFIG " << config_file_name <<
"\n";
93 if (!platform::isFileReadable(config_file_name))
95 UniqueArray<std::byte> bytes;
100 app_info.setRuntimeConfigFileContent(bytes);
103 JSONValue config = jdoc.root().child(
"configuration");
106 std::cout <<
"READING CONFIG\n";
107 properties::readFromJSON<ApplicationInfo,ApplicationInfoProperties>(config,app_info);
177 : m_simple_executor(x), m_functor(
ft){}
179 : m_simple_executor(x), m_old_functor(
ft){}
187 else if (m_old_functor)
190 int returnValue()
const {
return m_return_value; }
192 ArcaneSimpleExecutor* m_simple_executor =
nullptr;
193 OldFunctorType* m_old_functor =
nullptr;
194 FunctorType* m_functor =
nullptr;
195 int m_return_value = 0;
260 ARCANE_FATAL(
"Can not execute 'IDirectSubDomainExecuteFunctor' without sub domain");
312_listPropertySettings()
314 using namespace Arcane::properties;
325 ARCANE_FATAL(
"ArcaneLauncher::init() has already been called");
342 properties::readFromParameterList<ParallelLoopOptions,ParallelLoopOptionsProperties>(args.
parameters(),
loop_options);
347 cerr <<
"** (ArcaneLauncher) Can't continue with the execution.\n";
377 ARCANE_FATAL(
"ArcaneLauncher::init() has to be called before");
380 ArcaneMain::_initRuntimes();
400 ARCANE_FATAL(
"ArcaneLauncher::createStandaloneSubDomain() should only be called once");
412_notifyRemoveStandaloneSubDomain()
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Classes, Types et macros pour gérer la concurrence.
Informations pour l'initialisation des accélérateurs.
Informations pour construire une instance de IApplication.
Informations sur une application.
int execute() override
Exécute l'opération du fonctor.
void setSubDomain(ISubDomain *sd) override
Positionne le sous-domaine associé. Cette méthode doit être appelée avant execute()
static StandaloneAcceleratorMng createStandaloneAcceleratorMng()
Créé une implémentation autonome pour gérer les accélérateurs.
static int run()
Point d'entrée de l'exécutable dans Arcane.
static String getExeDirectory()
Nom complet du répertoire où se trouve l'exécutable.
static DotNetRuntimeInitialisationInfo & dotNetRuntimeInitialisationInfo()
Informations pour l'initialisation du runtime '.Net'.
static void init(const CommandLineArguments &args)
Positionne les informations à partir des arguments de la ligne de commande et initialise le lanceur.
static ApplicationBuildInfo & applicationBuildInfo()
Informations sur les paramêtre d'exécutions de l'application.
static StandaloneSubDomain createStandaloneSubDomain(const String &case_file_name)
Créé une implémentation autonome pour gérer un sous-domaine.
static bool isInitialized()
Indique si init() a déjà été appelé.
static ApplicationInfo & applicationInfo()
Informations sur l'application.
static AcceleratorRuntimeInitialisationInfo & acceleratorRuntimeInitialisationInfo()
Informations pour l'initialisation des accélerateurs.
static int runDirect(std::function< int(IDirectExecutionContext *)> func)
static void setDefaultMainFactory(IMainFactory *mf)
Positionne la fabrique par défaut pour créer les différents gestionnaires.
static ApplicationBuildInfo & defaultApplicationBuildInfo()
Informations pour l'initialisation des accélerateurs.
static AcceleratorRuntimeInitialisationInfo & defaultAcceleratorRuntimeInitialisationInfo()
Informations pour l'initialisation des accélerateurs.
static DotNetRuntimeInitialisationInfo & defaultDotNetRuntimeInitialisationInfo()
Informations pour l'initialisation du runtime '.Net'.
static int run()
Point d'entrée de l'exécutable dans Arcane.
static ApplicationInfo & defaultApplicationInfo()
Infos par défaut de l'application.
static void setDefaultMainFactory(IMainFactory *mf)
Positionne la fabrique par défaut.
Classe permettant d'exécuter directement du code sans passer par la boucle en temps.
Arguments de la ligne de commande.
const ParameterList & parameters() const
Liste des paramètres.
void executeFunctor() override
Exécute la méthode associé
ISubDomain * createSequentialSubDomain(const String &case_file_name) override
Créé un sous-domaine en séquentiel avec le fichier de jeu de données ayant pour nom case_file_name.
ISubDomain * createSequentialSubDomain() override
Créé un sous-domaine en séquentiel sans jeu de données.
Contexte d'exécution directe.
Contexte d'exécution directe avec création d'un sous-domaine.
Informations pour l'initialisation du runtime '.Net'.
Implémentation de la classe de gestion de l'exécution.
Interface d'un fonctor pour exécuter du code directement après la création d'un sous-domaine sans pas...
Manufacture des classes d'Arcane.
Interface du gestionnaire d'un sous-domaine.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Options d'exécution d'une boucle parallèle en multi-thread.
Implémentation autonome de 'IAcceleratorMng.h'.
Implémentation autonome d'un sous-domaine.
static void setDefaultParallelLoopOptions(const ParallelLoopOptions &v)
Positionne les valeurs par défaut d'exécution d'une boucle parallèle.
Interface d'un paramètre de propriété.
virtual String description() const =0
Description de la propriété
virtual String commandLineArgument() const =0
Nom de l'argument de la ligne de commande (nul si aucun)
Interface d'un visiteur sur une propriété.
Classe de base d'une exception.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-