Коммуникатор MPI star (звезда-звезда) работает лучше, чем MPI_COMM_WORLD?

Рассмотрим следующий простой сценарий для MPI-приложения: корневой процесс передает (MPI_Bcast) какие-то параметры (несколько десятков байт - фиксированный размер), затем все узлы начинают выполнять какие-то вычисления, затем корень собирает результаты (MPI_Gather - возможно, очень большие набор данных). После сохранения данных рутом программа завершает работу.

При каких обстоятельствах (количество процессов, задержка и т. д.) (если таковые имеются) использование коммуникатора, созданного с использованием топологии виртуальной звезды, обеспечит лучшую производительность, чем использование MPI_COMM_WORLD, и почему? Использует ли коммуникатор ленивую инициализацию для реальных каналов (т. е. открывает канал, сокет и т. д. только в первый раз, когда это требуется). Зависит ли реализация этого поведения?

Примечание: я использую openmpi1.4.3-2 и простой C.


person Constantin Carapencea    schedule 15.12.2012    source источник


Ответы (1)


Топологии коммуникатора — это удобные функции сопоставления, они не требуются для изменения того, как происходит фактическая коммуникация. Даже учитывая, что в звездообразной или любой другой топологии графа есть процессы, не связанные (в топологическом смысле), это не мешает им посылать друг другу сообщения, если они знают ранг другого процесса в коммуникаторе . Реализации MPI могут использовать топологию в качестве подсказки для оптимизации коммуникационного пути, но это сделает их очень сложными фрагментами кода, и, по крайней мере, Open MPI не делает этого в своих коллективных алгоритмах (не очень хорошо проверенных и, следовательно, обычно отключенный коллективный компонент hierarch принимает во внимание аппаратную иерархию, но не виртуальные топологии).

Топологии могут влиять на связь посредством переупорядочения рангов, если конструктору коммуникатора задано значение reorder=1. Это дает реализации MPI свободу переупорядочивать ранги процессов, чтобы максимально приблизить их физическое размещение к схеме топологии, предоставленной конструктору, с учетом физической топологии аппаратного обеспечения под ним. Существуют аппаратные платформы с выделенными сетями для коллективных операций. Например, IBM Blue Gene/P имеет глобальную сеть прерываний, позволяющую быстро реализовать MPI_BARRIER, и специализированную коллективную сеть, которая ускоряет некоторые коллективные операции (включая широковещательные рассылки). Но их можно использовать только на MPI_COMM_WORLD — резервная программная реализация используется для любого другого коммуникатора.

Зависит ли реализация этого поведения?

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

person Hristo Iliev    schedule 15.12.2012