我的代码有些奇怪。实际上,我有一个多处理代码。
因此,当我以1 cpu运行此代码时,大约需要218分钟。如果使用32 cpus和每个CPU 12 gb,则大约需要35分钟。 10 cpus和12 gb大约需要35分钟。注意,我的代码加载了两个文件,它们总共有10gb。
有人可以通过诊断帮助我如何检查为什么10和32核的运行时间相同吗?
通常情况下,使用32 cpus的时间应该更少,不是吗?
代码正在通过这样的脚本运行:
#!/bin/bash
#SBATCH --account=def-hmcheick
#SBATCH --cpus-per-task 32
#SBATCH --mem-per-cpu=12G
#SBATCH --time=02:00:00
module load python/3.5.4
source "/project/ENV3.5.4/bin/activate"
time mpirun python /project/myproject/executor.py
在executor.py中,我有一个字典,其中每个键都有一个值列表,我想将该键与该列表中的每个值进行比较。我怎样才能做到这一点?换句话说,我该如何传递要并行计算的键和值列表。我所做的是:
with concurrent.futures.ProcessPoolExecutor(32) as executor:
for key, vector in executor.map(unwrap_self_alignment, zip([self]*len(keyList), keyList)):