2017-07-21 51 views

回答

0

要複用同一套接字上的所有線程,您需要compact scheduling,這可以通過幾種方法實現。

如果您已經有了工人,請使用tasksetnumactl來獲取當前的父親關係,然後將該子代移至同一個套接字。這個明顯的缺點是它是事後。

如果您尚未設置主設備,請爲英特爾OpenMP環境設置KMP_AFFINITY=compact環境變量,或爲GNU OpenMP環境設置OMP_PROC_BIND=master環境變量。這是事先設定的,但要求您瞭解您的編譯環境,或至少涵蓋所有情況。

+0

我可能應該說「core」而不是「CPU」,我想讓兩個線程在一個內核上覆用,所以它們是時間交錯的。 –

+0

如果您提前知道線程數,可以使用'OMP_NUM_THREADS'和'OMP_PROC_BIND = close'來[模擬它](http://www.glennklockwood.com/hpc-howtos/process-affinity.html# 2-2-round-robin-scheduling),但除此之外,我認爲你必須知道拓撲...在一天結束時,一切都調用['sched_setaffinity'](https://linux.die.net/man/2/sched_setaffinity),它需要知道拓撲。 – bishop

相關問題