在 C 语言的 MPI 程序中,我在哪里可以指定或查看核心数。 换句话说,我改进了一个用 c 编写的程序(MPI fox 算法),它运行 2 个内核,但实际上我想更改它以运行 4 个内核...... 该程序使用笛卡尔拓扑。
最佳答案
您为 SPMD/MPMD 启动器mpiexec
(或mpirun
)指定所需的进程数,通常为
mpiexec -n <# of processes> <other options> ./executable <arguments>
然后可以通过查询world communicator的大小,得到启动的MPI进程数:
int nprocs;
MPI_Comm_size(MPI_COMM_WOLRD, &nprocs);
printf("There are %d processes running in this MPI program\n", nprocs);
如果程序也是混合 MPI+OpenMP 代码,则可以通过设置 OMP_NUM_THREADS
环境变量来控制每个进程中的线程数,除非该数字在代码中被调用 omp_set_num_threads()
或使用应用于 parallel
区域的显式 num_threads
子句。
关于c - MPI 核心数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13545246/