Возвращаемое значение MPI_Dims_create () - PullRequest
0 голосов
/ 30 июня 2018

Если у меня есть 64 процессы, и я хочу создать декартову топологию MPI в 3-D, топология по умолчанию, возвращаемая MPI_Dims_create(), равна 4x4x4. Почему это 4x4x4 и почему не 8x4x2 или 4x8x2 или 16x2x2 или любая другая возможная комбинация?

1 Ответ

0 голосов
/ 30 июня 2018

MPI_Dims_create специально создан как удобная функция для создания сбалансированной топологии.

Сбалансированная топология, т.е. в идеале куб обладает определенными оптимальными свойствами. Представьте, что вы выполняете симуляцию на сетке 160x160x160 со своими процессами.

  • При 4x4x4 каждый процессор получает 40x40x40 для работы, и в случае простого обмена границами необходимо отправить 40x40 каждому из 6 соседей (9600 в целом)

  • При 8x4x2 каждый процессор получает 20x40x80, граница составляет 2x20x40 + 2x20x80 + 2x40x80 = 11200

  • При 16x2x2 каждый процессор получает 10x80x80, граница составляет 4x10x80 + 2x80x80 = 16000

Как видите, размер границы, который необходимо заменить, является наименьшим для куба. Как правило, сбалансированная топология является хорошим значением по умолчанию.

Вы также можете установить ограничения с помощью MPI_Dims_create или использовать MPI_Cart_create для создания гибких декартовых топологий.

...