Распараллеливание произведения матрица-блок-вектор с использованием многопроцессорной обработки модуля Python? - PullRequest
0 голосов
/ 27 марта 2019

Вот моя проблема:

У меня есть код, который делает умножение между очень очень большой матрицей и несколькими векторами на каждой итерации (вид блочного вектора, который можно представить как высокую и худую матрицу).Я использую модуль многопроцессорной обработки Python для распараллеливания этого продукта и запускаю эти задания в кластере.Проблема в том, что часы кластера зависят от памяти, которую запускают ваши задания.И как таковые, данные проблемы, по существу большой матрицы, отправляются в память всех используемых процессоров.Таким образом, умножение используемой памяти на число процессоров и огромные затраты кластерного времени.Я хотел бы знать, есть ли способ, чтобы используемая память хранилась только в одном месте и использовалась на нескольких процессорах с этим модулем python?По сути, я хотел бы сделать распределенную память в кластере с Python с простым модулем в качестве многопроцессорной.

Я запускаю такие задания на нескольких кластерах, в зависимости от очереди в данный момент, но яЯ в основном заинтересован в том, чтобы сделать это на Cori, суперкомпьютере nersc.

Я не смог найти ничего подходящего для этой проблемы, в частности, конечно, потому что один простой ответ таков: хорошо выполняйте параллельные вычисления и используйте MPI, который вы b ****Но код написан на python, и в настоящий момент я не ищу оптимальной производительности, просто сократил время вычислений, сохранив код простым и легко изменяемым.

Спасибо за любой ваш ответ!

...