mcexec: -t option and OMP_NUM_THREADS for thread pool size

This commit is contained in:
Balazs Gerofi
2016-12-14 18:56:30 +09:00
parent df9f1f8f78
commit aa15e5eea8

View File

@ -155,6 +155,7 @@ static int enable_vdso = 1;
/* Partitioned execution (e.g., for MPI) */
static int nr_processes = 0;
static int nr_threads = -1;
struct fork_sync {
pid_t pid;
@ -1332,7 +1333,7 @@ int main(int argc, char **argv)
}
/* Parse options ("+" denotes stop at the first non-option) */
while ((opt = getopt_long(argc, argv, "+c:n:", mcexec_options, NULL)) != -1) {
while ((opt = getopt_long(argc, argv, "+c:n:t:", mcexec_options, NULL)) != -1) {
switch (opt) {
case 'c':
target_core = atoi(optarg);
@ -1342,6 +1343,10 @@ int main(int argc, char **argv)
nr_processes = atoi(optarg);
break;
case 't':
nr_threads = atoi(optarg);
break;
case 0: /* long opt */
break;
@ -1557,7 +1562,16 @@ int main(int argc, char **argv)
return 1;
}
n_threads = ncpu;
if (nr_threads > 0) {
n_threads = nr_threads;
}
else if (getenv("OMP_NUM_THREADS")) {
/* Leave some headroom for helper threads.. */
n_threads = atoi(getenv("OMP_NUM_THREADS")) + 4;
}
else {
n_threads = ncpu;
}
/*
* XXX: keep thread_data ncpu sized despite that there are only