您可以为SPMD/MPMD启动器mpiexec(或mpirun)指定所需的进程数,通常为
mpiexec -n <# of processes> <other options> ./executable <arguments>
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过查询世界通信器的大小来查找启动的MPI进程数:
int nprocs;
MPI_Comm_size(MPI_COMM_WOLRD, &nprocs);
printf("There are %d processes running in this MPI program\n", nprocs);
Run Code Online (Sandbox Code Playgroud)
如果程序也是混合MPI + OpenMP代码,则可以通过设置OMP_NUM_THREADS环境变量来控制每个进程中的线程数,除非通过调用omp_set_num_threads()或使用num_threads应用于parallel区域的显式子句在代码中覆盖该数字.