Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
pbs集群-python多重模拟_Python_Multiprocessing_Cluster Computing_Pbs_Mpi4py - Fatal编程技术网

pbs集群-python多重模拟

pbs集群-python多重模拟,python,multiprocessing,cluster-computing,pbs,mpi4py,Python,Multiprocessing,Cluster Computing,Pbs,Mpi4py,我必须用不同的参数(或随机数生成器种子)运行同一模型的多个模拟。以前,我在一个有很多内核的服务器上工作,在那里我使用了带有apply\u async的python多处理库。这非常方便,因为我可以决定要占用的最大内核数,模拟只需进入一个队列 现在我搬到了一个有hpc集群和pbs一起工作的地方。从反复试验和不同的答案看来,多处理只在一个节点内工作。有没有一种方法可以让它在许多节点上工作,或者在其他任何一个达到相同功能的库中工作,并且在几行代码中使用起来同样容易 要让您了解我的代码类型: import

我必须用不同的参数(或随机数生成器种子)运行同一模型的多个模拟。以前,我在一个有很多内核的服务器上工作,在那里我使用了带有apply\u async的python多处理库。这非常方便,因为我可以决定要占用的最大内核数,模拟只需进入一个队列

现在我搬到了一个有hpc集群和pbs一起工作的地方。从反复试验和不同的答案看来,多处理只在一个节点内工作。有没有一种方法可以让它在许多节点上工作,或者在其他任何一个达到相同功能的库中工作,并且在几行代码中使用起来同样容易

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

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?

我发现,在MPI集群中运行为
多处理编写的代码时,该软件包非常方便,只需很少的更改


我希望有帮助

这看起来很有希望,我会试试看!谢谢,它真的很好用!但是,我遇到了一个您可能已经知道的问题:在每个节点上运行几个进程时,它工作得很好。相反,当我使用2个完整节点运行时,我收到一个错误“PSM\u SHAREDCONTEXTS\u MAX=16”。我正在运行schwimmbad的demo_示例,但使用的是我的函数,而不是demo函数。此外,减少每个节点的作业数只会将错误消息中的最大值减少到8,然后是4。我现在正在运行演示来解决这个问题。