Производительность Open MPI: есть ли накопление времени в независимых узлах? - PullRequest
0 голосов
/ 01 августа 2020

Я разрабатываю код на Фортране, используя Open MPI, чтобы ускорить вычисления. Проблема, которую я заметил, немного сбивает с толку.

Вот она: я использую каждый узел в моем кластере для вычисления каждой порции одного и того же количества. Сначала я просто позволял каждому узлу выполнять вычисления и не выполнял никакой связи между узлами, чтобы проверить, получу ли я такое же количество времени вычисления. И я не ...

Это то, что я получаю, id = ранг узла вместе с номером элемента, связанного с. Более того, отмечу, что практически всегда самый быстрый узел с именем rank = number_machine-1. Почему тогда у других узлов время больше? Вы когда-нибудь видели эту проблему? Большое спасибо за вашу помощь.

  • subprocs id = 11 с 1014 элементами, выполненными в .............. 10.402s
  • subprocs id = 9 с 991 элементом, выполненным в .............. 12.749s
  • subprocs id = 10 с 991 элементом, выполненным в ............ .. 13.499s
  • subprocs id = 8 с 991 элементом, выполненным в .............. 21.416s
  • subprocs id = 7 с 991 элементом, выполненным в .............. 54.828s
  • subprocs id = 6 с 991 элементом, выполненным за ........... 01m 16.038s
  • subprocs id = 5 с 991 элементом, выполненным в ........... 03m 19.449s
  • subprocs id = 4 с 991 элементом, выполненным в ........... 05m 25.459s

Жерому Ричарду: В кластере, который я использую, есть только Open MPI, и я не являюсь администратором для установки других реализаций, поэтому я не знаю, возникает ли эта проблема. или нет.

Мой алгоритм очень базовый c: мне нужно вычислить массив (1: N), я делю (1, N) на количество подинтервалов (i1, i2), равное к числу узлов.

  1. Я выделяю переменные, необходимые для каждого независимого узла.
  2. Я пишу процедуру для вычисления массива количества (i1: i2) для каждого подинтервала (i1, i2) . И я использую одну и ту же процедуру для всех узлов.
  3. Я просто вызываю mpirun и указываю количество используемых узлов.

Поскольку я использую одну и ту же процедуру для каждого узла, я не вижу, как время расчета может отличаться для всех узлов. Что касается рабочей среды, я использую эту версию Linux -3.2.91-server.

1 Ответ

0 голосов
/ 03 августа 2020

Спасибо за комментарии. Думаю, теперь я понимаю, почему это так. На самом деле это не имеет ничего общего с MPI. Время вычисления различных узлов показывает свойство количества, которое я вычисляю, т.е. в моем разделе первый, второй и третий интервалы (i1, i2), которые (по удобству) всегда связаны с узлами, имеющими ранг = 0,1, 2 et c .. Они вносят наибольший вклад в мое количество, а другие интервалы вносят гораздо меньший, чем они. Это означает, что у меня будет много нулевых или маленьких чисел, с которыми я буду работать в последних интервалах. Вот почему у меня есть неравновесие во времени между узлами. такое же явление.

...