ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/microstructure/src/lanceurparra.cpp
Revision: 1030
Committed: Tue Jul 16 15:20:26 2019 UTC (5 years, 9 months ago) by couturad
File size: 3146 byte(s)
Log Message:
Liberation de la memoire dans le buffer pour ecriture instantanee lorsque parra.exe est utilise avec nohup

File Contents

# User Rev Content
1 francois 1028 #include <stdio.h>
2     #include <stdlib.h>
3     #include <string>
4     #include <omp.h>
5     #include "ot_parametres.h"
6     int main(int argc,char **argv) {
7     std::string executable=argv[1];
8     int nbcpu=atoi(argv[2]);
9     int nbechan=atoi(argv[3]);
10    
11 couturad 1029
12     std::string parametre;
13     if(argc==5) parametre=argv[4];
14    
15    
16     enum TYPE_MICROSTRUCTURE{POLYCRISTAUX=0,
17     PARTICULES=1};
18     int type_microstructure=TYPE_MICROSTRUCTURE::POLYCRISTAUX;
19     if(argc<5)
20     {
21     type_microstructure=TYPE_MICROSTRUCTURE::PARTICULES;
22     executable="../../"+executable;
23     }
24    
25 francois 1028 OT_PARAMETRES param;
26 couturad 1029 std::string nomcumul;
27     std::string nomcumul1;
28     std::string nomcumul2;
29     if(type_microstructure==TYPE_MICROSTRUCTURE::POLYCRISTAUX)
30     {
31     param.lire((char*)parametre.c_str());
32     nomcumul=param.get_nom("fichiercumul");
33     nomcumul1 = nomcumul+".txt";
34     nomcumul2 = nomcumul+".gnu";
35     }
36 francois 1028
37     printf("\033[1;4;32;41m***********************************************\033[0m\n");
38     printf("\033[1;4;32;41m******* Lanceur parralléle de code ***********\033[0m\n");
39     printf("\033[1;4;32;41m***********************************************\033[0m\n");
40 couturad 1030 fflush(stdout);
41 francois 1028 int nbthreads, tid;
42     omp_set_num_threads(nbcpu);
43     #pragma omp parallel private ( tid ) shared ( nbthreads )
44     {
45     tid = omp_get_thread_num();
46     //if( 0 == tid )
47     #pragma omp single
48     nbthreads = omp_get_num_threads();
49     char commande[255];
50 couturad 1029 sprintf(commande,"mkdir -p cpu%d",tid);
51 francois 1028 system(commande);
52 couturad 1029 if(type_microstructure==TYPE_MICROSTRUCTURE::POLYCRISTAUX)
53     {
54 francois 1028 sprintf(commande,"cp vasy vasy_par param_aster.txt %s %s2 ./cpu%d",parametre.c_str(),parametre.c_str(),tid);
55     system(commande);
56 couturad 1029 }
57    
58 francois 1028 //printf("Hello World! I am thread %d/%d\ n", tid, nbthreads);
59     #pragma omp for schedule(dynamic)
60     for (int i=0;i<nbechan;i++)
61     // printf("Bonjour %d à vous Je suis le calcul %d %d\n",i,tid,nbthreads);
62     {
63 couturad 1029 printf("\033[1;4;32;41mCPU numero %d. Calcul numero %d de %d\033[0m\n",tid,i+1,nbechan);
64 couturad 1030 fflush(stdout);
65 couturad 1029 if(type_microstructure==TYPE_MICROSTRUCTURE::POLYCRISTAUX)
66     {
67     sprintf(commande,"cd cpu%d;%s",tid,executable.c_str());
68     system(commande);
69     }
70     else if(type_microstructure==TYPE_MICROSTRUCTURE::PARTICULES)
71     {
72     sprintf(commande,"mkdir -p cpu%d/e%d; cd cpu%d/e%d;%s",tid,i,tid,i,executable.c_str());
73     system(commande);
74     }
75    
76 francois 1028 }
77     }
78 couturad 1029 if(type_microstructure==TYPE_MICROSTRUCTURE::POLYCRISTAUX)
79     {
80 francois 1028 printf("\n\033[1;4;32;41m***** Rassemblement des résultats *************\033[0m\n\n\n");
81 couturad 1030 fflush(stdout);
82 francois 1028 char commande[2550];
83     char commande2[2550];
84     sprintf(commande,"tail -n+1 ./cpu0/%s;",nomcumul1.c_str());
85     for (int i=1;i<nbthreads;i++)
86     sprintf(commande,"%stail -n+2 ./cpu%d/%s; ",commande,i,nomcumul1.c_str());
87     sprintf(commande2,"(%s)>%s",commande,nomcumul1.c_str());
88     system(commande2);
89     sprintf(commande,"tail -n+1 ./cpu0/%s>%s",nomcumul2.c_str(),nomcumul2.c_str());
90     system(commande);
91 couturad 1029 }
92 francois 1028
93    
94     printf("\033[1;4;32;41m***********************************************\033[0m\n");
95     printf("\033[1;4;32;41m********************* Fin ********************\033[0m\n");
96     printf("\033[1;4;32;41m***********************************************\033[0m\n");
97    
98    
99    
100     return EXIT_SUCCESS;
101 couturad 1029 }