Multithreading
所有程序在同一個核心上執行
我發現我機器上的所有程序都只能在單個核心上執行,並且它們的核心親和性設置為 0。這是一個小的 python 腳本,它為我重現了這個:
import multiprocessing import numpy as np def do_a_lot_of_compute(a): for i in range(1000): a = a * np.random.randn(123789) return a if __name__ == '__main__': with multiprocessing.Pool() as pool: pool.map(do_a_lot_of_compute, np.arange(10000))
pid 15977's current affinity list: 0 pid 15978's current affinity list: 0 pid 15979's current affinity list: 0 pid 15980's current affinity list: 0 pid 15981's current affinity list: 0 pid 15982's current affinity list: 0 pid 15983's current affinity list: 0 pid 15984's current affinity list: 0 pid 15985's current affinity list: 0
所以我的問題歸結為:為什麼核心親和力都設置為 0?沒有設置 OMP 或 KMP 環境變數。
該問題與
SLURM
根據PBS
請求的核心數量設置核心親和性有關。添加SLURM
以下行可以使用所有核心:#SBATCH --cpus-per-task=8