我編程上的騎士登陸,其具有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