我想使用多重处理来运行一个简单的任务(我认为这与在 matlab 中使用 parfor 相同,正确吗?)
例如:
from multiprocessing import Pool
def func_sq(i):
fig=plt.plot(x[i,:]) #x is a ready-to-use large ndarray, just want
fig.save(....) #to plot each column on a separate figure
pool = Pool()
pool.map(func_sq,[1,2,3,4,5,6,7,8])
Run Code Online (Sandbox Code Playgroud)
但我很困惑如何使用 slurm 提交我的工作。我一直在寻找答案,但找不到好的答案。目前,虽然不使用多处理,但我正在使用 slurm 作业 sumit 文件,如下所示:(名为 test1.sh)
#!/bin/bash
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -p batch
#SBATCH --exclusive
module load anaconda3
source activate py36
srun python test1.py
Run Code Online (Sandbox Code Playgroud)
然后,我在提示窗口中输入 sbatch test1.sh。
那么如果我想使用多处理,我应该如何修改我的sh文件?我自己尝试过,但似乎只需将 -n 更改为 16 和 Pool(16) 就会使我的工作重复 16 次。
或者,如果多重处理不合适,是否有办法最大化我的性能(我听说过多重威胁,但不知道它到底是如何工作的)
我该如何有效地利用我的记忆力才不会被压垮?(我的x矩阵很大)
对于 GPU …