Я паралелізую код, щоб чисельно вирішити 5-мірну модель балансу населення. В даний час у мене дуже хороший паралелізований код MPICH2 у FORTRAN, але в міру збільшення значень параметрів масиви стають занадто великими, щоб працювати в режимі розподіленої пам'яті.
У мене є доступ до кластеру з 15 вузлами, де кожен вузол має два 8-ядерних процесора та 128 ГБ оперативної пам’яті. Я хочу написати запуск програми з MPI-3.0 в режимі спільної пам'яті, щоб кожен процес не створював власну копію кожного масиву.
Перш ніж я можу що-небудь запустити на кластері, я повинен перевірити його на робочому столі під управлінням Ubuntu. По суті, це одне лезо кластера, оскільки воно має два 8 ядерних процесора та 128 ГБ оперативної пам’яті. Я буду писати і тестувати свій код на ньому, тому, будь ласка, направляйте свої відповіді на запуск програм на комп'ютері Ubuntu.
Я прочитав, що існує спосіб запустити MPI-3.0 в режимі спільної пам'яті, наприклад OpenMP, замість режиму розподіленої пам'яті за замовчуванням.
Запитання:
Як мені доведеться змінити код? Чи потрібно додавати дзвінки в інші функції MPI, як-от
MPI_WIN_ALLOCATE
?Як скомпілювати свій код для запуску MPI-3.0 у режимі спільної пам'яті? Чи буде це інакше, якщо він знаходиться над декількома вузлами?
Будь ласка, дайте зразки сценаріїв компіляції, якщо можете. У мене також є лише компілятори GNU. Кластер, який я використовую, не підтримує компілятори Intel.
mpiexec -n 8 /path/to/application
щоб підробити ваш комп'ютер на думку, що він має 8 різних вузлів.