Параллельные вычисления: как разделить вычислительные ресурсы между пользователями?

Я запускаю симуляцию на машине Linux со следующими характеристиками.

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                80
On-line CPU(s) list:   0-79
Thread(s) per core:    2
Core(s) per socket:    20
Socket(s):             2
NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 85
Model name:            Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz
Stepping:              4
CPU MHz:               3099.902
CPU max MHz:           3700.0000
CPU min MHz:           1000.0000
BogoMIPS:              4800.00
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              1024K
L3 cache:              28160K

Это сценарий командной строки запуска для моего решателя.

/path/to/meshfree/installation/folder/meshfree_run.sh    # on 1 (serial) worker
/path/to/meshfree/installation/folder/meshfree_run.sh N  # on N parallel MPI processes

Я делюсь системой с другим моим коллегой. Он использует 10 ядер для своего решения. Какой вариант в этом случае был бы для меня самым быстрым? Используете 30 процессов MPI?

Я инженер-механик с очень небольшими знаниями о параллельных вычислениях. Так что извините, если вопрос слишком глупый.


person vikingd    schedule 28.02.2020    source источник
comment
Возникает вопрос: что лучше: запустить этот процесс один раз или 30 раз? Это вопрос, очень специфичный для конкретного приложения, и он зависит от слишком большого количества переменных, чтобы дать окончательный ответ. В общем, это случай «попробуй и узнай».   -  person bob dylan    schedule 28.02.2020
comment
Это всего лишь одна работа. Мне нужно выделить для этого правильные ресурсы. Итак, на машине с 40 ядрами, где уже используется 10 ядер, лучше ли мне запустить код на 30 процессорах? Также с учетом гиперпоточности.   -  person vikingd    schedule 28.02.2020
comment
Какой альтернативный вариант вы предлагаете? Почему ты не можешь запустить его и узнать, что лучше?   -  person bob dylan    schedule 28.02.2020
comment
Альтернативой было бы использование 60 процессов, но я не уверен, как процессы распределяются между процессорами. На всю симуляцию уходит около 4 дней, а времени у меня мало. Я уже нахожусь в процессе симуляции.   -  person vikingd    schedule 28.02.2020
comment
Что ж, вы могли бы подумать, прежде чем начать четырехдневное моделирование, вы знаете лучший способ максимизировать свою вычислительную мощность - обычно с помощью урезанной версии (например, 10% выборки). Опять же - вопрос, на который никто не может ответить за вас, слишком индивидуальный.   -  person bob dylan    schedule 28.02.2020


Ответы (1)


В: «Что было бы самым быстрым вариантом для меня в этом случае? ... заканчивается время. Я уже нахожусь в середине симуляция. "

Приветствую Ахен. Если бы не постфактум, самым быстрым вариантом была бы предварительная настройка вычислительной экосистемы таким образом, чтобы:

  • проверьте полную информацию о своем устройстве NUMA - используя lstopo или lstopo-no-graphics -.ascii, но не lscpu введите описание изображения здесь
  • инициируйте свои задания, имея как можно больше MPI-рабочих процессов, отображаемых на физическом (и лучше всего каждый из них отображается исключительно на его частное) ядро ​​ЦП (поскольку они этого заслуживают, поскольку они несут основную обработку FEM / создание сетки нагрузка )
  • если ваша политика FH не запрещает делать это, вы можете попросить системного администратора ввести сопоставление соответствия ЦП (которое защитит ваши данные в кэше от вытеснения и дорогостоящих повторных выборок, что приведет к 10 -ЦП, назначенные исключительно для использования вашим коллегой, и указанные 30-ЦП, назначенные исключительно для запуска вашего приложения, а остальные перечисленные ресурсы ~ 40-ЦП ~ являются «общими» -для использования оба, вашими соответствующими масками привязки к процессору.

В: "Используете 30 процессов MPI?"

Нет, это не разумное предположение для обработки ASAP - используйте как можно больше процессоров для рабочих, насколько это возможно для уже распараллеленных MPI FEM-симуляций (они обладают высокой степенью параллелизма и чаще всего по своей природе "узкой" локальностью ( будет он представлен как решатели разреженной матрицы / N-полосной матрицы), поэтому параллельная часть часто очень высока по сравнению с другими числовыми задачами) - Закон Амдала объясняет, почему. < img src = "https://i.stack.imgur.com/MwPSd.png" alt = "введите описание изображения здесь">

Конечно, могут быть некоторые академические возражения по поводу возможной небольшой разницы, для случаев, когда накладные расходы на коммуникацию могут быть немного уменьшены для одного (-ых) работника (-ов), но необходимость в правилах грубой силы в FEM / meshed- решатели (затраты на связь, как правило, намного ниже, чем у крупномасштабных, сегментированных методом конечных элементов числовых вычислений, отправляющих, но небольшое количество данных о состоянии "граничных" узлов соседних блоков)

htop покажет вам фактическое состояние (можно отметить процесс: блуждание ядра ЦП из-за уловок тепловой балансировки HT / ядра ЦП, которые снижают итоговую производительность)

введите описание изображения здесь

И обязательно проконсультируйтесь со службой поддержки meshfree в своих источниках базы знаний о передовых методах.


В следующий раз лучшим вариантом будет приобретение вычислительной инфраструктуры с меньшими ограничениями для обработки критических рабочих нагрузок (учитывая критические бизнес-условия, считайте это риском бесперебойной работы BAU, тем более, что это повлияет на непрерывность вашего бизнеса).

person user3666197    schedule 28.02.2020
comment
Спасибо. Это очень помогает. - person vikingd; 28.02.2020
comment
Всегда добро пожаловать, @vikingd - вам может понравиться этот stackoverflow.com/a/60427809 как для < b> производительность, влияющие на детали и интерактивный графический инструмент (симулятор) закона Амдала ускорение сети в реальном мире [SERIAL]- [PARALLEL] рабочие нагрузки - person user3666197; 28.02.2020