pbs群集-python多个模拟

问题描述 投票:0回答:1

我必须使用不同的参数(或随机数生成器种子)对同一模型进行多次仿真。以前,我在具有许多核心的服务器上工作,在这里我将python多处理库与apply_async一起使用。这非常方便,因为我可以决定要占用的最大内核数,而仿真将排入队列。

现在,我搬到了带有pb的hpc集群的地方​​。从反复试验和不同的答案看来,多处理仅在一个节点内起作用。有没有一种方法可以使它在多个节点上运行,或者可以在几行中使用相同的易用性的其他任何具有相同功能的库?

为了让您了解我的代码类型:

import functions_library as L
import multiprocessing as mp
if __name__ == "__main__":

    N = 100

    proc = 50
    pool = mp.Pool(processes = proc)



    seed = 342
    np.random.seed(seed)

    seeds = np.random.randint(low=1,high=100000,size=N)

    resul = []
    for SEED in seeds:

        SEED = int(SEED)

        resul.append(pool.apply_async(L.some_function, args = (some_args)))
        print(SEED)

    results = [p.get() for p in resul]

    database = pd.DataFrame(results)


    database.to_csv("prova.csv")

编辑

据我了解,由于与pb自然交互,mpi4py可能会有所帮助。那是对的吗?如何使我的代码适应mpi4py?

python multiprocessing cluster-computing pbs mpi4py
1个回答
0
投票

[我发现schwimmbad包非常方便,只需很少的更改即可在MPI集群中运行为schwimmbad编写的代码。

希望对您有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.