кластер PBS - Python несколько симуляций - PullRequest
0 голосов
/ 24 октября 2019

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

1 Ответ

0 голосов
/ 28 октября 2019

Я обнаружил, что пакет schwimmbad весьма удобен для запуска кода, написанного для multiprocessing в кластере MPI с минимальными изменениями.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...