linux 跑程式可以指定只用 P-核 嗎?

如題
2024-08-12 11:47 發佈
Linux可以設processor affinity啊,不過詳細步驟就要試過才知道了....
GOOGLE到的 :

你要先確認該程式有用到支援CPU Affinity (CPU親合力)的程式碼。
https://hackgrass.blogspot.com/2016/10/cpu-affinity-cpu.html

CPU Affinity (CPU親合力)
一. 定義:
CPU Affinity(親合力),係指在linux 中,process 想儘量長時間運行在某個指定的CPU上 ,且不被轉移至其他CPU 的傾向性。

二. 函式 :
CPU親合力用一個 cpu_set_t 型態來產生一CPU集合,下面討論函式:

cpu_set_t cpuset;

CPU_ZERO(&cpuset) :清空給定變數cpuset 中的CPU set。
CPU_SET(n, &cpuset):將CPU n(0~n)加進給定變數cpuset集合中。
CPU_CLR(n, &cpuset):將CPU n 從給定變數cpuset集合中移除。
CPU_ISSET(n, &cpuset):檢查CPU n是否存在於這個cpuset集合中.

以下為最重要的兩個函式:

sched_setaffinity(pid_t pid, unsigned int cpusetsize, cpu_set_t *cpuset) ;

該函式將process為pid,丟進名為cpuset 的CPU set中執行。
cpusetsize 即為cpuset的長度,通常設定為sizeof(cpu_set_t)。
若pid給予0,則表示目前的process。

sched_getaffinity(pid_t pid, unsigned int cpusetsize, cpu_set_t *cpuset) ;
取得指定pid的process可以運行在哪些cpu中。

三.pthread
若我們討論的範疇為thread對於CPU的affinity時,我們會改用以下兩個函式:

pthread_setaffinity_np(pthread_t thread,size_t cpusetsize,const cpu_set_t *cpuset);
參數差別只在上一個是pid(process),這個是tid(thread)。通常我們會使用pthread_self()來表示目前的thread。
回傳值為一int型態;若綁定成功時,會回傳0。

int pthread_getaffinity_np(pthread_t thread,size_t cpusetsize, cpu_set_t *cpuset);
可使用 taskset, 具體方法如下

1. 先用 lscpu -e 列出所有的 core, MAXMHZ較小的即為 e-core, 以此例來說, 0-15為p-core, 16-23為e-core

2. 使用 taskset 啟動你的程式, 例如 "taskset -c 0-15 你的執行擋", 如此就只會用p-core執行你的程式

我用"7z b" (7zip benchmark)在12900K上驗證過, 執行 "7z b" 會在System Monitor上看到24 core全滿, 但用
"taskset -c 0-15 7z b" 就只會看到前16 core會滿. 後面8 core idle
多謝各位先進回覆

在提問之前我用了4樓樓主所提的方法

之所以提問在於用13代 CPU 跑了一些數值運算的模擬仿真結果和用第11代CPU所費時間差不多沒有比較快

起初懷疑會不會是跑在E-cores 上的原因經確認都是跑在P-cores 

只能說英特爾真是混同樣的仿真從第三代到第13代快了沒多少從數量級八單位降到五 歷經10個世代只快了40%左右真是蠻可悲的股票崩盤也是市場價值的反饋
pc8801

至於改用顯卡去算有沒有比較讚這個你可以研究看看

2024-08-13 10:34
cdma2k
cdma2k 樓主

pc8801 cuda programming is a different story

2024-08-13 12:11
順便一問有人有用過下面這個環境設置嗎我設了以後怎麼感覺跑起來還是一樣沒什麼不一樣

export KMP_HW_SUBSET=8c:intel_core,1t
pc8801

只想用p核的話,到bios關閉e核行不?

2024-08-13 10:31
cdma2k
cdma2k 樓主

pc8801 我的bios沒這選項

2024-08-13 12:14
cdma2k wrote:
多謝各位先進回覆在提...(恕刪)


更正更新
第13代的 在mip intensive 的app 速度比第11代還慢滿多

無論在環境設置或在bios 關掉 HT 居然一點幫助都沒有這跟過往的經驗不一樣

Intel不知道暗中搞了什麼鬼真是混股票掉成這個樣子也只是剛好而已
cdma2k
cdma2k 樓主

fdbt 根據過往的經驗不會考慮 AMD;只是提醒大家避開13代 不值得

2024-08-15 6:09
fdbt

要改用 AMD了

2024-08-15 16:35
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?