13 #include <FrontISTRConfig.h>
40 MPI_Comm_size(MPI_COMM_WORLD, &proc);
49 return omp_get_max_threads();
59 void set_num_threads(
char *arg) {
63 fprintf(stderr,
"Error : specify number of OpenMP threads.\n");
64 fprintf(stderr,
"Format: -t <n>\n");
68 exec_threads = atoi(arg);
70 if (exec_threads == 0) {
71 fprintf(stderr,
"Error : specify 1 or more OpenMP threads.\n");
74 omp_set_num_threads(exec_threads);
76 mkl_set_num_threads(exec_threads);
86 printf(
"usage: [ mpirun -np <mpiprocs> ] fistr1 [options] \n");
87 printf(
" -h: Show this help message.\n");
88 printf(
" -v: Show version.\n");
90 printf(
" -t <n>: Set number of OpenMP threads\n");
92 printf(
" -c <Path of control file>: Use this control file. Default "
93 "./hecmw_ctrl.dat\n");
94 printf(
"--debug: Show debug messages.\n");
104 MPI_Comm_rank(MPI_COMM_WORLD, &rank);
107 printf(
"##################################################################\n");
108 printf(
"# FrontISTR #\n");
109 printf(
"##################################################################\n");
111 if (VERSION_PATCH == 0){
112 printf(
"version: %d.%d\n", VERSION_MAJOR, VERSION_MINOR);
114 printf(
"version: %d.%d.%d\n", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH);
116 printf(
"git_hash: %s\n", GIT_HASH );
118 printf(
" date: %s\n", BUILD_DATE );
121 printf(
" MPI: \"%d.%d", MPI_VERSION, MPI_SUBVERSION);
122 #if defined(MVAPITCH2_VERSION)
123 printf(
", MVAPITCH %s", MVAPITCH2_VERSION);
124 #elif defined(I_MPI_VERSION)
125 printf(
", Intel MPI %s", I_MPI_VERSION);
126 #elif defined(MSMPI_VER)
127 printf(
", Microsoft MPI");
128 #elif defined(MPI_NEC_MODE_GETPUTALIGNED)
130 #elif defined(MPICH_VERSION)
131 printf(
", MPICH %s", MPICH_VERSION);
132 #elif defined(OMPI_MAJOR_VERSION)
133 printf(
", Open MPI %d.%d.%d", OMPI_MAJOR_VERSION, OMPI_MINOR_VERSION, OMPI_RELEASE_VERSION);
137 printf(
" MPI: disabled\n");
140 printf(
" OpenMP: %d\n", _OPENMP);
142 printf(
" OpenMP: disabled\n");
150 printf(
"--with-tools ");
153 printf(
"--with-refiner ");
156 printf(
"--with-metis ");
159 printf(
"--with-mumps ");
162 printf(
"--with-lapack ");
165 printf(
"--with-ml ");
168 printf(
"--with-parmetis ");
171 printf(
"--with-mkl ");
175 #ifdef HECMW_METIS_VER
176 printf(
" HECMW_METIS_VER: %d\n", HECMW_METIS_VER);
185 int proc, i, len, mpi_ver, mpi_subver;
191 char hostname[MPI_MAX_PROCESSOR_NAME];
192 char mpilibver[MPI_MAX_LIBRARY_VERSION_STRING];
194 MPI_Comm_size(MPI_COMM_WORLD, &proc);
195 MPI_Comm_rank(MPI_COMM_WORLD, &rank);
196 MPI_Get_version(&mpi_ver, &mpi_subver);
197 MPI_Get_library_version(mpilibver,&len);
199 while ((p = strchr(mpilibver,
'\n')) !=
NULL) *p =
'\0';
200 MPI_Get_processor_name(hostname, &len);
206 printf(
"execute: \n");
209 d=(int)difftime(t,mktime(gmtime(&t)));
210 strftime(date,
sizeof(date),
"%Y-%m-%dT%H:%M:%S", localtime(&t));
211 printf(
" date: %s", date);
212 if (abs(d)<86400) printf(
"%+05d", (
int)(d/3600)*100+(
int)(d/60)%60);
218 printf(
" MPI: \"%d.%d, %.128s\"\n", mpi_ver, mpi_subver, mpilibver);
225 printf(
" %d: %s\n",0,hostname);
226 for (i=1;i<proc;i++){
227 MPI_Recv(&hostname,
sizeof(hostname), MPI_CHAR, i, 0, MPI_COMM_WORLD, &status);
228 printf(
" %d: %s\n",i,hostname);
231 MPI_Send(&hostname, len, MPI_CHAR, 0, 0, MPI_COMM_WORLD);
234 gethostname(hostname,
sizeof(hostname));
235 printf(
" %d: %s\n",0,hostname);
237 if (rank==0) printf(
"---\n");
246 MPI_Comm_rank(MPI_COMM_WORLD, &rank);
249 if (rank==0) printf(
"---\n");
257 fprintf(stderr,
"Sorry this option cannot work yet. (-c)\n");
258 fprintf(stderr,
"%s\n", arg);
279 {
"-t", set_num_threads},
280 {
"-T", set_num_threads},
291 int main(
int argc,
char *argv[])
297 MPI_Init(&argc, &argv);
299 for (i = 0; i < argc; i++) {
302 p->
func(argv[i + 1]);
309 MPI_Barrier( MPI_COMM_WORLD );