pbs 集群 - python 多次模拟

pbs cluster - python multiple simulations

我必须 运行 对具有不同参数(或随机数生成器种子)的同一模型进行多次模拟。以前我在一个有很多内核的服务器上工作,我在其中使用 python 多处理库和 apply_async。这非常方便,因为我可以决定要占用的最大内核数,而模拟只会进入队列。

现在我搬到了一个使用 pbs 的 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")

编辑

据我所知,mpi4py 可能会有所帮助,因为它可以自然地与 pbs 交互。那是对的吗?我怎样才能使我的代码适应 mpi4py?

我发现 schwimmbad 包对于在 MPI 集群中为 multiprocessing 编写的 运行 代码非常方便,只需很少的改动。

希望对您有所帮助!