Мне нужно запустить несколько симуляций одной и той же модели с различными параметрами (или начальным числом генератора случайных чисел). Ранее я работал на сервере со многими ядрами, где я использовал многопроцессорную библиотеку python с apply_async. Это было очень удобно, так как я мог решить, какое максимальное количество ядер должно быть занято, и симуляции просто войдут в очередь.
Теперь я переехал в место с кластером 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")
EDIT
Как я понимаю, mpi4py может быть полезен, так как естественным образом взаимодействует с pbs. Это правильно? Как я могу адаптировать свой код к mpi4py?