【发布时间】:2017-07-07 14:24:42
【问题描述】:
我写了一个混合的 openMP/MPI 程序,我这样称呼它
mpirun -np ncores --bind-to none -x OMP_NUM_THREADS=nthreads ./program
其中 ncores 是非共享内存进程 (MPI) 的数量,nthreads 是共享内存线程 (OpenMP) 的数量。
这意味着在每个 ncores 中,程序将在 nthreads 上执行。
我不想在每个内核中都有 nthreads,但我对改变每个内核的数量很感兴趣。例如如果 ncores=2 我想在核心 1 上设置 2 个线程,在核心 2 上设置 6 个线程。
有没有办法做到这一点?
我使用的是 Open MPI 1.10.3
【问题讨论】:
-
你的计算系统的配置是什么:节点数,每个节点上的cpu核心数。你可以改变 mpirun 行中的两个参数:ncores 和 nthreads。如果你的一些 MPI 进程(id 为 0)想要 2 个线程而其他 MPI 进程(id 1)想要 6 个线程,不要使用全局环境变量,切换到
omp_set_num_threadsfunction
标签: c multithreading parallel-processing openmp openmpi