Я написал программу, которая использует MPI, она решает очень большую систему уравнений. Я получаю очень хорошие «ускорения» для очень больших систем. Под этим я подразумеваю, что если я увеличу количество процессов, то потребуется время, необходимое для завершения половинок, плюс постоянное время, добавленное к этому, которое я считаю связью. Например, в одном процессе это может занять 60 секунд, затем в двух - 35 секунд (60 + 5), затем в 4 - 20,5 (17,5 + 3) и т.д.
Однако при входе в системы размером примерно 1 на 1 миллион я начинаю получать странные результаты. При переходе с 4 ядер на 8 ядер я получаю половину времени плюс 10 секунд "связи". То есть время, необходимое для завершения вычисления, составляет от ~ 260 до ~ 140.
Это хорошо, но затем при переходе с 8 на 16 время возрастает с ~ 140 до ~ 110, я также получаю очень похожий плохой результат при переходе с 16 на 32. То есть от ~ 110 до ~ 85.
Кажется, я думаю, что это как-то связано с самим процессором, так как это поведение не появилось бы внезапно (?).
В системе 2 таких процессора
https://ark.intel.com/products/120485/Intel-Xeon-Gold-6140-Processor-24_75M-Cache-2_30-GHz
Существует также около 8000 ГБ оперативной памяти.
Я хотел бы получить объяснение, почему это может происходить.
Я рад предоставить больше информации. Я знаю, что это сложный вопрос, и я не уверен, какая информация вам нужна.