MPI核心数

was*_*was 0 c mpi

我在哪里可以指定或查看C中MPI程序中的核心数.换句话说,我改进了用c(MPI fox算法)编写的程序,该程序运行2个核心,但实际上我想改变它以便运行4个核心...该程序使用笛卡尔拓扑.

Hri*_*iev 5

您可以为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区域的显式子句在代码中覆盖该数字.