我编程上的骑士登陆,其具有68芯和4个超线程/核心节点。我正在研究混合MPI/OpenMP应用程序。 我的问题是,如果4个超线程意味着用作OpenMP的 线程或者我如何使用他们?当我运行使用 以下方案我的程序:可用线程着陆
export OMP_NUM_THREADS=1
mpirun -np 68 ./app
它的运行速度比当我使用的方案更快:
export OMP_NUM_THREADS=4
mpirun -np 68 ./app
也许问题是,对于一个特定的MPI线程不接近 彼此。但是,我不知道该怎么做。
总之,我可以使用4个超线程/芯作为OpenMP的线程?
谢谢。
在绝大多数的应用程序,也就会跑这么多线程,同时运行在每个核心的MPI排名没有用。英特尔MPI的默认设置应该是将本地线程放置在线程中,但首先验证您的OpenMP在单个MPI等级上显示增益,使用2或4个内核,然后尝试可能的等级和线程数组合。 – tim18
关于如何设置亲和力的细节因MPI实现而异,但针对KNL的MPI应包含该功能。 – tim18
我还没有足够的经验与knl说,一个应用程序使用多于1个线程每个内核有效可能会在所有内核使用前达到峰值。在knc上,mpi可能会保持核心繁忙的消息传递以及另一个正在运行的os和mpi。 – tim18