我实际上正在尝试在HPC集群中运行python脚本。以前,运行它需要花费大量时间,然后通过首先使用 multiprocessing
工具来最大程度地减少了并行编程的运行时间。一切都很好,但是问题是我只能使用一个节点,并且可以要求HPC的最高16个内核来运行我的工作。我已经仔细阅读了 multiprocessing
的功能,发现运行一个作业并恢复该问题最多可以花费一个节点,我已经使用再次进行了并行编程> mpi4py
。现在一切都很好,在这种情况下,我也可以使用多个内核。但是我又发现了一个相同的问题,那就是如何从HPC群集中请求多个节点来运行该作业,我知道我可以使用MPI来做到这一点。在这里,我给出了可以在两个内核和一个节点上运行的代码。
import numpy as np
from mpi4py import MPI
import sys
comm = MPI.COMM_WORLD
size = 2 * comm.Get_size() #size of processors
rank = comm.Get_rank()
N_conditions = 4 # no. of conditions
range_cond = range(rank / size * N_conditions, ((rank + 1) * 2/ size) * N_conditions) # formula to generate range for all conditions
solution = [None] * len(range_cond)
for i_conditions in range_cond:
solution[i_conditions] = solve(i_conditions) #solve is another function that could return all components of 'solution' for 'N_conditions'
total_solution = np.asarray(solution)