我目前正在使用 C++ 开发一个混合程序。我同时使用 openMP 和 MPI。但是,我不知道如何为我的作业指定处理器和线程的数量。假设我想使用 5 个节点,每个节点上有一个 MPI 处理器,每个节点有 24 个线程。
这就是我现在提交 my_job
的方式:
qsub -l select=5:ncpus=24:mpiprocs=5 -l place=scatter:exclhost my_job
在 my_job
脚本上,我正在做这个
#PBS -l select=5:ncpus=24:mpiprocs=5
export OMP_NUM_THREADS=24
mpic++ -O3 myprogram.cpp -o out -fopenmp -lquadmath -std=gnu++11
mpirun -n 5 ./out
但是,性能非常慢,这让我觉得我定位资源的方式可能有问题。
有什么建议吗?
最佳答案
#PBS -l select=5:ncpus=24:mpiprocs=1:ompthreads=24
关于c++ - 为 OpenMP + MPI 应用程序定位资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47277587/