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
для создания гибких декартовых топологий.