Это не вопрос конкретной кластерной среды, а скорее общий случай распределения программного обеспечения по нескольким узлам в кластере.
Я понимаю, что большинство кластеров HPC используют какой-либо диспетчер рабочей нагрузки для распределениязадания на несколько узлов.Из моего ограниченного исследования Slurm кажется популярным выбором, но другие также используются.
Я вижу, как это полезно, если вы хотите запускать n
независимых задач.Но что, если вы хотите запускать задачи, которые общаются друг с другом?
Если бы я разрабатывал приложение, которое было разделено на две или более машины, я мог бы просто разработать простой протокол (или использовать существующий) и отправлять / получать сообщения через что-то вроде TCP / IP.Если бы все стало действительно сложно, было бы не сложно спроектировать простую шину сообщений или концентратор сообщений для размещения более двух машин.
Во-первых, разумно ли использовать TCP в кластере HPC или этокак правило, не используется по соображениям производительности?
Во-вторых, в некластерной среде я заранее знаю IP-адреса задействованных машин, но в кластере я делегирую решение, на каких физических машинах развернуто мое программное обеспечение.для менеджера рабочей нагрузки, как Slurm.Итак, как я могу "подключить" узлы?Как MPI достигает этого, или он не использует TCP / IP для обеспечения связи между узлами?
Извините, если этот вопрос является немного открытым для StackOverflow, я с удовольствием перенесу его куда-нибудь еще, если естьболее подходящее место, чтобы задавать подобные вопросы.