Простого пути не существует, и я сомневаюсь, что существует полное решение. Например, Open MPI поставляется с обширным набором ранжированных сетевых модулей связи и пытается создать для них все экземпляры, выбрав в итоге тот, который имеет самый высокий ранг. Идея состоит в том, что ранги каким-то образом отражают скорость базовой сети и что, если данный тип сети отсутствует, его модуль не будет создан, поэтому, столкнувшись с системой, которая имеет Ethe rnet и InfiniBand, он выберет InfiniBand так как его модуль имеет более высокий приоритет. Вот почему большие задания Open MPI запускаются относительно медленно и, безусловно, не защищают от ошибок - в некоторых случаях нужно вмешиваться и вручную выбирать нужные модули, особенно если у узла есть несколько сетевых интерфейсов InfiniBand HCA, и не все из них предоставляют узлу подключение к узлу. Обычно это настраивается системно-системным администратором или поставщиком, и поэтому MPI «просто работает» (совет: в очень небольшом числе случаев это не так).
Вы можете Скопируйте подход Open MPI и разработайте набор модулей обнаружения для вашей программы. Для TCP создайте две или более копии на разных узлах, перечислите их активные сетевые интерфейсы и соответствующие IP-адреса, сопоставьте сетевые адреса и свяжите все интерфейсы на одном узле, а затем попытайтесь подключиться к нему с другого узла (-ов). После успешного подключения запустите что-то вроде TCP-версии NetPIPE , чтобы измерить скорость и задержку сети и выбрать самую быструю сеть. После того, как вы получили эту информацию от первоначального небольшого набора узлов, весьма вероятно, что этот же интерфейс используется и на всех других узлах, поскольку большинство систем HP C настолько однородны, насколько это возможно, когда дело доходит до их узлов. конфигурация сети.
Если установлена работающая реализация MPI, вы можете использовать ее для запуска тестовой программы. Вы также можете включить ведение журнала отладки в библиотеке MPI и проанализировать выходные данные, но для этого потребуется, чтобы целевая система имела реализацию MPI, поддерживаемую вашим анализатором журнала. Кроме того, большинство библиотек MPI используют собственный InfiniBand или любой другой высокоскоростной сетевой API и не сообщают вам, какой интерфейс IP-поверх-какой-либо, потому что они вообще не будут его использовать (если системный администратор не настроит иначе) .