16#include <LecFicDiffuse_JDD.h>
17#include <Execute_parallel.h>
18#include <Interprete_bloc.h>
19#include <TRUST_Error.h>
20#include <TRUSTArray.h>
33 Cerr <<
"Execute_parallel::readOn() not coded" << finl;
40 Cerr <<
"Execute_parallel::printOn() not coded" << finl;
61 Cerr <<
"Execute_parallel::interpreter to run several cases:" << finl;
66 bool disable_journal =
false;
71 param.
ajouter(
"nb_procs", &nb_procs);
77 const int n_calculs = liste_cas.size();
80 Cerr <<
"Nb_procs not given, we assume that calculations are sequential."
88 Cerr <<
"Error : nb_procs array must have " << n_calculs
89 <<
" values." << finl;
97 if (min_array(nb_procs) < 1)
99 Cerr <<
"Error : processor numbers must be >= 1" << finl;
104 for (
int i = 0; i < n_calculs; i++)
105 count += nb_procs[i];
108 Cerr <<
"Error : computations require " << count <<
" processors." << finl;
109 Cerr <<
"but only " <<
nproc() <<
" processors has been asked." << finl;
119 for (
int i = 0; i < n_calculs; i++)
121 const int n = nb_procs[i];
126 snprintf(s, 20,
"%05d", (
int)count);
139 snprintf(s2, 20,
"%05d", (
int)(count+n-1));
142 log=
"log files from ";
147 Cerr <<
"Error and standard outputs are redirected into " << log <<
" for case " << liste_cas[i] << finl;
153 for (
int j = 0; j < n; j++)
160 Cerr << n_calculs <<
" cases are running..." << finl;
163 const int old_journal_level = get_journal_level();
164 for (
int i = 0; i < n_calculs; i++)
168 set_Cerr_to_journal(1);
170 change_journal_level(0);
171 Nom nom_fichier(liste_cas[i]);
173 Journal(1) <<
"Execute_parallel: Entering subgroup " << i
174 <<
" to run case " << nom_fichier << finl;
176 nom_fichier +=
".data";
197 Cerr << err.
get_pe() <<
" <> " <<
Process::me() <<
" in Execute_parallel::interpreter." << finl;
202 set_Cerr_to_journal(0);
204 Cerr <<
"Case " << liste_cas[i] <<
" has finished. See " << log_courant << finl;
206 Cerr <<
"!!! Case " << liste_cas[i] <<
" has failed. See " << log_courant <<
" !!!" << finl;
208 Journal(1) <<
"Execute_parallel: Exiting subgroup " << i << finl;
214 change_journal_level(old_journal_level);
218 Cerr << finl <<
"End of Execute_parallel::interpreter" << finl;
: Cette classe decrit un groupe de processeurs sur lesquels
Class defining operators and methods for all reading operation in an input flow (file,...
Interprete permettant l'execution simultanee de plusieurs fichiers .
Entree & interpreter(Entree &) override
Cree une partition des nproc processeurs du calcul pour interpreter N jeux de donnees differents.
Interprete un bloc d'instructions dans le jeu de donnees.
Entree & interpreter_bloc(Entree &is, Bloc_Type bloc_type, int verifier_sans_interpreter)
Interpretation d'un bloc d'instructions prises dans l'entree is.
Classe de base des objets "interprete".
Cette classe implemente les operateurs et les methodes virtuelles de la classe EFichier de la facon s...
void set_check_types(bool flag) override
appelle get_entree_master().
class Nom Une chaine de caractere pour nommer les objets de TRUST
Un tableau de chaine de caracteres (VECT(Nom)).
const Nom & que_suis_je() const
renvoie la chaine identifiant la classe.
virtual Entree & readOn(Entree &)
Lecture d'un Objet_U sur un flot d'entree Methode a surcharger.
static const Nom & nom_du_cas()
Renvoie une reference constante vers le nom du cas.
static Nom & get_set_nom_du_cas()
Renvoie une reference non constante vers le nom du cas (pour pouvoir le modifier).
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
static int enter_group(const Comm_Group &group)
Si le processeur local appartient au groupe, le groupe courant pour ce processeur devient "group" et ...
static void create_group(const ArrOfInt &liste_pe, OWN_PTR(Comm_Group) &group, int force_Comm_Group_NoParallel=0)
Creation d'un nouveau groupe de processeurs (utilisation possible n'importe ou dans le code).
static void exit_group()
Retourne dans le groupe ou l'on etait avant le dernier enter_group() reussi (dont le resultat a ete 1...
Helper class to factorize the readOn method of Objet_U classes.
void ajouter_flag(const char *keyword, const bool *value)
Register a boolean flag whose mere presence switches it to true.
void ajouter(const char *keyword, const int *value, Param::Nature nat=Param::OPTIONAL)
Register an integer parameter.
int lire_avec_accolades_depuis(Entree &is)
Parse the parameter block { ... } from is.
static Sortie & Journal(int message_level=0)
Renvoie un objet statique de type Sortie qui sert de journal d'evenements.
static int nproc()
renvoie le nombre de processeurs dans le groupe courant Voir Comm_Group::nproc() et PE_Groups::curren...
static void barrier()
Synchronise tous les processeurs du groupe courant (attend que tous les processeurs soient arrives a ...
static int exception_sur_exit
static int me()
renvoie mon rang dans le groupe de communication courant.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.
_SIZE_ size_array() const
void resize_array(_SIZE_ new_size, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
const int & get_pe() const