Как общаться между узлами кластера? - PullRequest
0 голосов
/ 13 октября 2018

Это не вопрос конкретной кластерной среды, а скорее общий случай распределения программного обеспечения по нескольким узлам в кластере.

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

Я вижу, как это полезно, если вы хотите запускать n независимых задач.Но что, если вы хотите запускать задачи, которые общаются друг с другом?

Если бы я разрабатывал приложение, которое было разделено на две или более машины, я мог бы просто разработать простой протокол (или использовать существующий) и отправлять / получать сообщения через что-то вроде TCP / IP.Если бы все стало действительно сложно, было бы не сложно спроектировать простую шину сообщений или концентратор сообщений для размещения более двух машин.

Во-первых, разумно ли использовать TCP в кластере HPC или этокак правило, не используется по соображениям производительности?

Во-вторых, в некластерной среде я заранее знаю IP-адреса задействованных машин, но в кластере я делегирую решение, на каких физических машинах развернуто мое программное обеспечение.для менеджера рабочей нагрузки, как Slurm.Итак, как я могу "подключить" узлы?Как MPI достигает этого, или он не использует TCP / IP для обеспечения связи между узлами?

Извините, если этот вопрос является немного открытым для StackOverflow, я с удовольствием перенесу его куда-нибудь еще, если естьболее подходящее место, чтобы задавать подобные вопросы.

1 Ответ

0 голосов
/ 14 октября 2018

Если бы я разрабатывал приложение, которое было разделено на две или более машин, я мог бы просто разработать простой протокол (или использовать существующий) и отправлять / получать сообщения через что-то вроде TCP / IP

И вот пришло MPI, чтобы не все заново изобретали колесо (а колесо - это несколько тысяч часов инженерного времени, это не ваше основное колесо колесницы, оно прошло несколько очень ухабистых дорог ...).
Но в конечном итоге именно это и делает MPI (в случае, если вы хотите, чтобы ваши коммуникации проходили через TCP, см. OpenMPI TCP )

Во-первых, в кластере HPCРазумно ли использовать TCP, или это обычно не используется из соображений производительности?

Это другие средства связи, чем TCP (разделяемая память, Myrinet, связи OpenFabrics, ...) OpenMPI FAQ ).В HPC на рынке представлено несколько решений, касающихся Interconnect (см. Top 500 )

Так как я могу "подключить" узлы?Как MPI достигает этого или не использует TCP / IP для обеспечения связи между узлами?

Управление проводкой осуществляется менеджером рабочей нагрузки (вы можете взглянуть на slurm configuration или loadleveler ).MPI просто «унаследует» от этого контекста, потому что в контексте HPC вы перестанете использовать mpirun, но, скорее всего, srun или runjob (вместо того, чтобы делать что-то вроде Укажите машины, на которых запущена программа с использованием MPI )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...