Classe de gestion de l'exécution. Plus de détails...
#include <arcane/impl/ArcaneMain.h>
Classes | |
class | Impl |
Fonctions membres publiques | |
ArcaneMain (const ApplicationInfo &infos, IMainFactory *factory) | |
ArcaneMain (const ApplicationInfo &app_info, IMainFactory *factory, const ApplicationBuildInfo &app_build_info, const DotNetRuntimeInitialisationInfo &dotnet_init_info, const AcceleratorRuntimeInitialisationInfo &accelerator_init_info) | |
void | build () override |
Construit les membres la classe. L'instance n'est pas utilisable tant que cette méthode n'a pas été appelée. Cette méthode doit être appelée avant initialize(). | |
void | initialize () override |
Initialise l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas été appelée. | |
bool | parseArgs (StringList args) override |
Analyse les arguments. | |
int | execute () override |
Lance l'exécution. Cette méthode ne retourne que lorsqu'on quitte le programme. | |
void | doAbort () override |
Effectue un abort. | |
void | setErrorCode (int errcode) override |
Positionne le code de retour. | |
int | errorCode () const override |
Code d'erreur de l'exécution. | |
void | finalize () override |
Effectue les dernières opérations avant destruction de l'instance. | |
const ApplicationInfo & | applicationInfo () const override |
Informations sur l'éxécutable. | |
const ApplicationBuildInfo & | applicationBuildInfo () const override |
Informations pour construire l'instance IApplication. | |
const DotNetRuntimeInitialisationInfo & | dotnetRuntimeInitialisationInfo () const override |
Informations d'initialisation du runtime '.Net'. | |
const AcceleratorRuntimeInitialisationInfo & | acceleratorRuntimeInitialisationInfo () const override |
Informations d'initialisation du runtime pour les accélérateurs. | |
IMainFactory * | mainFactory () const override |
Fabrique principale. | |
IApplication * | application () const override |
Application. | |
ServiceFactoryInfoCollection | registeredServiceFactoryInfos () override |
Liste des fabriques de service enregistrées. | |
ModuleFactoryInfoCollection | registeredModuleFactoryInfos () override |
Liste des fabriques de module enregistrées. | |
bool | hasGarbageCollector () const override |
Indique que certains objets sont gérés via un ramasse miette. | |
void | setDirectExecuteFunctor (IDirectSubDomainExecuteFunctor *f) override |
IDirectSubDomainExecuteFunctor * | _directExecuteFunctor () const |
Fonctions membres publiques hérités de Arcane::IArcaneMain | |
virtual | ~IArcaneMain () |
Libère les ressources. | |
Fonctions membres publiques statiques | |
static int | arcaneMain (const ApplicationInfo &app_info, IMainFactory *factory=nullptr) |
Point d'entrée de l'exécutable dans Arcane. | |
static int | run () |
Point d'entrée de l'exécutable dans Arcane. | |
static void | arcaneInitialize () |
Initialise Arcane. | |
static void | arcaneFinalize () |
Termine l'utilisation Arcane. | |
static void | setHasGarbageCollector () |
Indique que certains objets sont gérés par un ramasse-miette. | |
static void | setHasDotNETRuntime () |
Indique que l'on tourne dans le runtime .NET. | |
static void | setDefaultMainFactory (IMainFactory *mf) |
Positionne la fabrique par défaut. | |
static ApplicationInfo & | defaultApplicationInfo () |
Infos par défaut de l'application. | |
static DotNetRuntimeInitialisationInfo & | defaultDotNetRuntimeInitialisationInfo () |
Informations pour l'initialisation du runtime '.Net'. | |
static AcceleratorRuntimeInitialisationInfo & | defaultAcceleratorRuntimeInitialisationInfo () |
Informations pour l'initialisation des accélerateurs. | |
static ApplicationBuildInfo & | defaultApplicationBuildInfo () |
Informations pour l'initialisation des accélerateurs. | |
static int | callFunctorWithCatchedException (IFunctor *functor, IArcaneMain *amain, bool *clean_abort, bool is_print=true) |
Appelle le fonctor functor en récupérant les éventuelles exceptions. | |
static void | setExecuteOverrideFunctor (ArcaneMainExecutionOverrideFunctor *functor) |
static bool | hasDotNetWrapper () |
Indique si on exécute une assembly '.Net' depuis un main en C++. | |
static Real | initializationTimeForAccelerator () |
Retourne le temps (en seconde) pour l'initialisation des runtimes accélérateurs pour ce processus. | |
static void | addServiceFactoryInfo (IServiceFactoryInfo *factory) |
Ajoute une fabrique de service. | |
static void | addModuleFactoryInfo (IModuleFactoryInfo *factory) |
Ajoute une fabrique de module. | |
static void | addApplicationBuildInfoVisitor (IApplicationBuildInfoVisitor *visitor) |
Ajoute un visiteur pour remplir ApplicationBuildInfo. | |
static void | redirectSignals () |
static bool | isMasterIO () |
static void | setUseTestLogger (bool v) |
Fonctions membres publiques statiques hérités de Arcane::IArcaneMain | |
static IArcaneMain * | arcaneMain () |
static void | setArcaneMain (IArcaneMain *arcane_main) |
Fonctions membres protégées | |
IApplication * | _application () |
ApplicationBuildInfo & | _applicationBuildInfo () |
Fonctions membres protégées statiques | |
static int | _internalRun (IDirectSubDomainExecuteFunctor *func) |
Fonctions membres privées | |
void | _dumpHelp () |
void | _parseApplicationBuildInfoArgs () |
Fonctions membres privées statiques | |
static int | _arcaneMain (const ApplicationInfo &, IMainFactory *) |
Point d'entrée de l'exécutable. | |
static void | _launchMissingInitException () |
static void | _checkHasInit () |
static void | _checkCreateDynamicLibraryLoader () |
static int | _runDotNet () |
static void | _checkAutoDetectMPI () |
static int | _checkAutoDetectAccelerator (bool &has_accelerator) |
Détecte et charge la gestion du runtime des accélérateurs. | |
static void | _setArcaneLibraryPath () |
static int | _initRuntimes () |
static int | _checkTestLoggerResult () |
Attributs privés | |
Impl * | m_p |
IMainFactory * | m_main_factory = nullptr |
IApplication * | m_application = nullptr |
int | m_error_code = 0 |
IDirectSubDomainExecuteFunctor * | m_direct_sub_domain_execute_functor = nullptr |
Attributs privés statiques | |
static bool | m_has_garbage_collector = false |
static bool | m_is_master_io = true |
static bool | m_is_use_test_logger = false |
static IMainFactory * | m_default_main_factory = nullptr |
static ArcaneMainExecutionOverrideFunctor * | m_exec_override_functor = nullptr |
static std::atomic< Int32 > | m_nb_arcane_init |
Nombre de fois que arcaneInitialize() a été appelé | |
static std::atomic< Int32 > | m_is_init_done |
1 si init terminé, 0 sinon | |
Amis | |
class | ArcaneMainExecInfo |
class | ArcaneLauncher |
class | ArcaneMainAutoDetectRuntimeHelper |
Classe de gestion de l'exécution.
Cette classe est interne à Arcane et ne doit pas être utilisée directement. Pour initialiser et exécuter le code il faut utiliser la classe ArcaneLauncher.
Définition à la ligne 78 du fichier ArcaneMain.h.
Arcane::ArcaneMain::ArcaneMain | ( | const ApplicationInfo & | infos, |
IMainFactory * | factory | ||
) |
Définition à la ligne 1195 du fichier ArcaneMain.cc.
Arcane::ArcaneMain::ArcaneMain | ( | const ApplicationInfo & | app_info, |
IMainFactory * | factory, | ||
const ApplicationBuildInfo & | app_build_info, | ||
const DotNetRuntimeInitialisationInfo & | dotnet_init_info, | ||
const AcceleratorRuntimeInitialisationInfo & | accelerator_init_info | ||
) |
Définition à la ligne 1205 du fichier ArcaneMain.cc.
|
override |
Définition à la ligne 1218 du fichier ArcaneMain.cc.
|
inlineprotected |
Définition à la ligne 330 du fichier ArcaneMain.h.
|
protected |
Définition à la ligne 855 du fichier ArcaneMain.cc.
|
staticprivate |
Point d'entrée de l'exécutable.
Définition à la ligne 509 du fichier ArcaneMain.cc.
Référencé par arcaneMain().
Détecte et charge la gestion du runtime des accélérateurs.
En retour, has_accelerator est vrai si on a chargé un runtime accélérateur.
0 | si tout est OK |
Définition à la ligne 1119 du fichier ArcaneMain.cc.
Références ARCANE_FATAL, et Arcane::platform::getDynamicLibraryLoader().
|
staticprivate |
Définition à la ligne 1069 du fichier ArcaneMain.cc.
|
staticprivate |
Définition à la ligne 706 du fichier ArcaneMain.cc.
|
staticprivate |
Définition à la ligne 627 du fichier ArcaneMain.cc.
|
staticprivate |
Définition à la ligne 932 du fichier ArcaneMain.cc.
|
inline |
Définition à la ligne 326 du fichier ArcaneMain.h.
|
private |
Définition à la ligne 1426 du fichier ArcaneMain.cc.
|
staticprivate |
Définition à la ligne 945 du fichier ArcaneMain.cc.
|
staticprotected |
Définition à la ligne 922 du fichier ArcaneMain.cc.
|
staticprivate |
Définition à la ligne 617 du fichier ArcaneMain.cc.
|
private |
Définition à la ligne 1252 du fichier ArcaneMain.cc.
|
staticprivate |
Définition à la ligne 994 du fichier ArcaneMain.cc.
|
staticprivate |
Définition à la ligne 691 du fichier ArcaneMain.cc.
|
overridevirtual |
Informations d'initialisation du runtime pour les accélérateurs.
Implémente Arcane::IArcaneMain.
Définition à la ligne 873 du fichier ArcaneMain.cc.
|
static |
Ajoute un visiteur pour remplir ApplicationBuildInfo.
Le pointeur passé en argument doit rester valide jusqu'à l'appel à arcaneMain(); Les visiteurs enregistrés sont appelés juste avant de créer l'application.
Définition à la ligne 801 du fichier ArcaneMain.cc.
Référencé par Arcane::arcaneAutoDetectMessagePassingServiceMPI().
|
static |
Ajoute une fabrique de module.
Cette méthode doit être appelée avant arcaneMain()
Définition à la ligne 792 du fichier ArcaneMain.cc.
|
static |
Ajoute une fabrique de service.
Cette méthode doit être appelée avant arcaneMain()
Définition à la ligne 783 du fichier ArcaneMain.cc.
|
inlineoverridevirtual |
Implémente Arcane::IArcaneMain.
Définition à la ligne 321 du fichier ArcaneMain.h.
Référencé par Arcane::ArcaneMainBatch::doAbort(), et parseArgs().
|
overridevirtual |
Informations pour construire l'instance IApplication.
Implémente Arcane::IArcaneMain.
Définition à la ligne 846 du fichier ArcaneMain.cc.
Référencé par Arcane::ArcaneMainBatch::execute().
|
overridevirtual |
Informations sur l'éxécutable.
Implémente Arcane::IArcaneMain.
Définition à la ligne 1243 du fichier ArcaneMain.cc.
|
static |
Termine l'utilisation Arcane.
Cette méthode doit être appelée à la fin de l'exécution. Une fois appelée, les objets de Arcane ne doivent plus être utilisés.
L'appel à run() gère l'initialisation et l'appel à cette méthode. Il n'est donc en général pas nécessaire de faire appel directement à cette méthode.
Supprime notre référence sur ItemGroupImpl::shared_null.
Définition à la ligne 746 du fichier ArcaneMain.cc.
Références Arcane::ItemGroupImpl::_destroySharedNull(), Arcane::ItemTypeMng::_destroySingleton(), Arcane::platform::getDynamicLibraryLoader(), Arcane::FlexLMMng::instance(), m_is_init_done, m_nb_arcane_init, Arcane::platform::platformTerminate(), et Arcane::platform::setDynamicLibraryLoader().
Référencé par run().
|
static |
Initialise Arcane.
Cette méthode doit être appelée avant tout utilisation d'un objet de Arcane. Elle peut être appelée plusieurs fois, auquel cas la méthode arcaneFinalize() doit être appelée un nombre de fois équivalent.
L'appel à run() provoque l'initialisation. Il n'est donc en général pas nécessaire de faire appel à cette méthode.
Définition à la ligne 718 du fichier ArcaneMain.cc.
Références Arcane::ItemGroupImpl::_buildSharedNull(), Arcane::ItemTypeMng::_singleton(), m_is_init_done, m_nb_arcane_init, et Arcane::platform::platformInitialize().
Référencé par run().
|
static |
Point d'entrée de l'exécutable dans Arcane.
Cette méthode effectue les appels suivants:
a
de IArcaneMain par l'appel à createArcaneMain().a
par la méthode IArcaneMain::build()a
par la méthode IArcaneMain::initialize()app_info | informations sur l'exécutable. |
factory | fabrique des gestionnaires de l'architecture. Si nul, utilise la fabrique spécifiée par setDefaultMainFactory() sinon une fabrique par défaut est utilisée. |
L'appel à cette méthode doit être précédé de Initialize();
0 | si l'exécution s'est déroulée sans erreur |
1 | en cas d'erreur inconnue. |
2 | en cas d'exception standard (std::exception) |
3 | en cas d'exception de l'architecture (IArcaneException) |
4 | en cas d'erreur fatale dans Arcane. |
Définition à la ligne 891 du fichier ArcaneMain.cc.
Références _arcaneMain().
|
overridevirtual |
Construit les membres la classe. L'instance n'est pas utilisable tant que cette méthode n'a pas été appelée. Cette méthode doit être appelée avant initialize().
Implémente Arcane::IArcaneMain.
Réimplémentée dans Arcane::ArcaneMainBatch.
Définition à la ligne 1231 du fichier ArcaneMain.cc.
Références Arcane::IMainFactory::createApplication(), Arcane::ApplicationBuildInfo::threadBindingStrategy(), et Arcane::IBase::traceMng().
Référencé par Arcane::ArcaneMainBatch::build().
|
static |
Appelle le fonctor functor en récupérant les éventuelles exceptions.
En retour clean_abort est vrai si le code s'arrête proprement, c'est à dire en parallèle que l'ensemble des processus et des threads exécutent le même code. C'est le cas par exemple si tous les procs détectent la même erreur et lancent par exemple un ParallelFatalErrorException. Dans ce cas, is_print indique si ce processus ou ce thread affiche les messages d'erreur. Si is_print est vrai, le message d'erreur est affiché sinon il ne l'est pas.
Si \ a clean_abort est faux, cela signifie que l'un des processus ou thread s'arrête sans que les autres ne le sachent, ce qui en générale se termine par MPI_Abort en parallèle.
Définition à la ligne 532 du fichier ArcaneMain.cc.
Références Arccore::ITraceMng::error(), Arccore::IFunctor::executeFunctor(), et Arccore::TraceAccessor::traceMng().
|
static |
Informations pour l'initialisation des accélerateurs.
Pour être prise en compte, ces informations doivent être modifiées avant l'appel à run() ou à rundDirect().
Définition à la ligne 828 du fichier ArcaneMain.cc.
Référencé par Arcane::ArcaneLauncher::acceleratorRuntimeInitialisationInfo(), et Arcane::ArcaneMainExecInfo::initialize().
|
static |
Informations pour l'initialisation des accélerateurs.
Pour être prise en compte, ces informations doivent être modifiées avant l'appel à run() ou à rundDirect().
Définition à la ligne 837 du fichier ArcaneMain.cc.
Référencé par Arcane::ArcaneLauncher::applicationBuildInfo().
|
static |
Infos par défaut de l'application.
Cette méthode permet de récupérer l'instance de ApplicationInfo
qui sera utilisée lors de l'appel à arcaneMain() sans arguments.
Il faut donc en général appeler cette méthode avant l'appel à run().
Définition à la ligne 810 du fichier ArcaneMain.cc.
Référencé par Arcane::ArcaneLauncher::applicationInfo(), et run().
|
static |
Informations pour l'initialisation du runtime '.Net'.
Pour être prise en compte, ces informations doivent être modifiées avant l'appel à run().
Définition à la ligne 819 du fichier ArcaneMain.cc.
Référencé par Arcane::ArcaneLauncher::dotNetRuntimeInitialisationInfo(), Arcane::ArcaneMainExecInfo::initialize(), et run().
|
overridevirtual |
Effectue un abort.
Implémente Arcane::IArcaneMain.
Réimplémentée dans Arcane::ArcaneMainBatch.
Définition à la ligne 1310 du fichier ArcaneMain.cc.
|
overridevirtual |
Informations d'initialisation du runtime '.Net'.
Implémente Arcane::IArcaneMain.
Définition à la ligne 864 du fichier ArcaneMain.cc.
|
inlineoverridevirtual |
Code d'erreur de l'exécution.
Implémente Arcane::IArcaneMain.
Définition à la ligne 311 du fichier ArcaneMain.h.
Référencé par Arcane::ArcaneMainBatch::finalize().
|
overridevirtual |
Lance l'exécution. Cette méthode ne retourne que lorsqu'on quitte le programme.
Implémente Arcane::IArcaneMain.
Réimplémentée dans Arcane::ArcaneMainBatch.
Définition à la ligne 1301 du fichier ArcaneMain.cc.
|
inlineoverridevirtual |
Effectue les dernières opérations avant destruction de l'instance.
Implémente Arcane::IArcaneMain.
Réimplémentée dans Arcane::ArcaneMainBatch.
Définition à la ligne 312 du fichier ArcaneMain.h.
|
static |
Indique si on exécute une assembly '.Net' depuis un main
en C++.
Définition à la ligne 678 du fichier ArcaneMain.cc.
|
inlineoverridevirtual |
Indique que certains objets sont gérés via un ramasse miette.
Implémente Arcane::IArcaneMain.
Définition à la ligne 324 du fichier ArcaneMain.h.
|
static |
Retourne le temps (en seconde) pour l'initialisation des runtimes accélérateurs pour ce processus.
Retourne 0.0 si aucun runtime accélérateur n'a pas été initialisé.
Définition à la ligne 882 du fichier ArcaneMain.cc.
Référencé par Arcane::Application::initialize().
|
overridevirtual |
Initialise l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas été appelée.
Implémente Arcane::IArcaneMain.
Réimplémentée dans Arcane::ArcaneMainBatch.
Définition à la ligne 1271 du fichier ArcaneMain.cc.
Références Arcane::IMainFactory::createServiceLoader(), et Arcane::IBase::initialize().
Référencé par Arcane::ArcaneMainBatch::initialize().
Définition à la ligne 300 du fichier ArcaneMain.h.
|
inlineoverridevirtual |
Fabrique principale.
Implémente Arcane::IArcaneMain.
Définition à la ligne 320 du fichier ArcaneMain.h.
|
overridevirtual |
Analyse les arguments.
Les arguments reconnus doivent être supprimés de la liste.
true | si l'exécution doit s'arrêter, |
false | si elle continue normalement |
Implémente Arcane::IArcaneMain.
Réimplémentée dans Arcane::ArcaneMainBatch.
Définition à la ligne 1337 du fichier ArcaneMain.cc.
Références application(), Arcane::CollectionBase::clear(), Arcane::CollectionBase::count(), et Arccore::String::null().
Référencé par Arcane::ArcaneMainBatch::parseArgs().
|
static |
Définition à la ligne 244 du fichier ArcaneMain.cc.
|
overridevirtual |
Liste des fabriques de module enregistrées.
Implémente Arcane::IArcaneMain.
Définition à la ligne 1292 du fichier ArcaneMain.cc.
|
overridevirtual |
Liste des fabriques de service enregistrées.
Implémente Arcane::IArcaneMain.
Définition à la ligne 1283 du fichier ArcaneMain.cc.
|
static |
Point d'entrée de l'exécutable dans Arcane.
Cette méthode appelle arcaneMain(const ApplicationInfo&,IMainFactory*) en utilisant les valeurs de defaultApplicationInfo() et de la fabrique spécifiée lors des appels à setDefaultMainFactory().
Définition à la ligne 955 du fichier ArcaneMain.cc.
Références arcaneFinalize(), arcaneInitialize(), Arcane::IArcaneMain::arcaneMain(), defaultApplicationInfo(), defaultDotNetRuntimeInitialisationInfo(), et Arcane::platform::hasDotNETRuntime().
Référencé par Arcane::ArcaneLauncher::run().
|
static |
Positionne la fabrique par défaut.
Cette méthode positionne la fabrique par défaut utilisée si aucune n'est spécifiée dans l'appel à arcaneMain().
Cette méthode doit être appelée avant arcaneMain().
Définition à la ligne 267 du fichier ArcaneMain.cc.
Référencé par Arcane::ArcaneLauncher::setDefaultMainFactory().
|
inlineoverridevirtual |
Implémente Arcane::IArcaneMain.
Définition à la ligne 325 du fichier ArcaneMain.h.
Positionne le code de retour.
Implémente Arcane::IArcaneMain.
Définition à la ligne 1319 du fichier ArcaneMain.cc.
|
static |
brief Fonctor d'exécution.
Cette méthode optionnelle permet de positionner un fonctor qui sera appelée à la place de execute(). Ce fonctor est appelé une fois l'application initialisée.
Comme l'appel à ce fonctor remplace l'exécution normale, seule une instance de IApplication est disponible. Il n'y a ni sous-domaine, ni session, ni maillage de disponible.
Définition à la ligne 669 du fichier ArcaneMain.cc.
|
static |
Indique que l'on tourne dans le runtime .NET.
Cette propriété ne peut être positionnée qu'au démarrage du calcul, avant l'appel à arcaneInitialize().
Définition à la ligne 656 du fichier ArcaneMain.cc.
Références m_nb_arcane_init, et Arcane::platform::setHasDotNETRuntime().
|
static |
Indique que certains objets sont gérés par un ramasse-miette.
Cette propriété ne peut être positionnée qu'au démarrage du calcul, avant l'appel à arcaneInitialize().
Définition à la ligne 643 du fichier ArcaneMain.cc.
Références m_nb_arcane_init.
Définition à la ligne 258 du fichier ArcaneMain.cc.
|
friend |
Définition à la ligne 82 du fichier ArcaneMain.h.
Définition à la ligne 83 du fichier ArcaneMain.h.
|
friend |
Définition à la ligne 81 du fichier ArcaneMain.h.
|
private |
Définition à la ligne 338 du fichier ArcaneMain.h.
|
staticprivate |
Définition à la ligne 344 du fichier ArcaneMain.h.
|
private |
Définition à la ligne 340 du fichier ArcaneMain.h.
|
private |
Définition à la ligne 339 du fichier ArcaneMain.h.
|
staticprivate |
Définition à la ligne 345 du fichier ArcaneMain.h.
Définition à la ligne 341 du fichier ArcaneMain.h.
|
staticprivate |
1 si init terminé, 0 sinon
Définition à la ligne 355 du fichier ArcaneMain.h.
Référencé par arcaneFinalize(), et arcaneInitialize().
Définition à la ligne 342 du fichier ArcaneMain.h.
Définition à la ligne 343 du fichier ArcaneMain.h.
|
private |
Définition à la ligne 337 du fichier ArcaneMain.h.
|
staticprivate |
Nombre de fois que arcaneInitialize() a été appelé
Définition à la ligne 353 du fichier ArcaneMain.h.
Référencé par arcaneFinalize(), arcaneInitialize(), setHasDotNETRuntime(), et setHasGarbageCollector().
|
private |
Définition à la ligne 336 du fichier ArcaneMain.h.