Vic*_*yyy 5 python multiprocessing python-3.x slurm
我想使用多重处理来运行一个简单的任务(我认为这与在 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 来说,是否可以做同样的事情?我当前没有多重处理的提交脚本是:
#!/bin/bash
#SBATCH -n 1
#SBATCH -p gpu
#SBATCH --gres=gpu:1
Run Code Online (Sandbox Code Playgroud)
“-n”标志设置您的批量提交将要执行的任务数量,这就是您的脚本多次运行的原因。您要更改的是“-c”参数,它表示每个任务分配的 CPU 数量。您的脚本会生成其他进程,但它们将是父进程的子进程并共享分配给它的 CPU。只需将“#SBATCH -c 16”添加到您的脚本中即可。至于内存,每个 CPU 都会为您的作业分配默认的内存量,因此增加 CPU 数量也会增加可用内存量。如果您没有获得足够的金额,请添加“#SBATCH --mem=20000M”之类的内容来请求特定金额。
归档时间: |
|
查看次数: |
5080 次 |
最近记录: |