c - MPI 核心数

标签 c mpi

在 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/

相关文章:

c# - 将不同类型的对象传递给非托管函数

c++ - 缓存在处理设备时会有限制吗?

c++ - 修改文件路径以在 Printf 中使用

parallel-processing - 何时使用 MPI、OpenMP 和 PBS Pro 进行超线程?

mpi - 探测 MPI_Bcast 或 MPI_Send

c - MPI 中的矩阵乘法

java - 多个嵌套循环的数学等价物

c - C中的MPI。在 I_send 和 Irecv 中使用循环

c - 用于测试 MPI_Type_vector 的简单 MPI 代码因段错误而崩溃 - 为什么?

c - 在c中使用指针进行字符串操作