我在一个有 68 个内核和 4 个超线程/内核的 Knights Landing 节点上编程。我正在开发一个混合 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 线程吗?
谢谢。