首页 > 解决方案 > 如何在python中并行集成for循环以在CLUSTER中运行

问题描述

我对并行计算完全陌生,事实上,除了在集群上运行一些可用代码(用 C++ 编写)之外,我自己从来没有编写过代码。请体谅!我正在尝试for在集群上并行运行一个循环来进行 n 次集成。我想要的原型是:

import numpy as np
from scipy import integrate

f = lambda z, y, x: a*(x*y*z)

a = np.linspace(1,1000,100)

out = np.zeros(100)

for i, ai in enumerate(a):
    a = ai
    out[i] = integrate.tplquad(f, 1, 2, lambda x: 2, lambda x: 3,lambda x, y: 0, lambda x, y: 1)[0]
    print(ai, out[i])

通常我将我的工作作为(PBS 脚本)运行:

mpirun -np 50 python myscript.py > output.txt

我的想法是我会同时运行每个循环,比如两次在 50 个处理器上运行 100 个循环以加快计算速度!我不知道这是否是并行作业在集群上运行的方式,但我正在努力学习。请帮忙!

注意:我使用的是 python 3。我已经安装mpi4pymultiprocess希望它们有用,但无法实现除此之外的任何东西。

我对 python 的计算知识处于纽曼计算物理学的水平。如果您能提供一些关于并行计算的额外参考资料,对我将非常有帮助。

标签: pythonpython-3.xparallel-processingmpi

解决方案


推荐阅读