Координаты декартова сдвига
Если топология это декартова структура, то MPI_SENDRECV часто используется вдоль какой-нибудь координаты, чтобы произвести сдвиг данных. На вход функции MPI_SENDRECV нужно подавать ранг источника для приёма и ранг приёмника для передачи. Вызов функции MPI_Cart_shift определяет эти аргументы. MPI_Cart_shift(comm, direction, disp, rank_source, rank_dest) IN comm -коммуникатор с декартовой структурой IN direction -координата сдвига (integer) IN disp -смещение (> 0: сдвиг вперёд, < 0: сдвиг назад) (integer) OUTrank_source -ранг процесса источника (integer) OUTrank_source -ранг процесса источника (integer) direction определяет координату значение которой изменяется сдвигом. Координаты нумеруются от 0 до ndims-1, где ndimsколичество размерностей. В зависимости от периодичности декартовой группы по выделенной координате MPI_Cart_shift даёт циклический или конечный сдвиг. В случае конечного сдвига, в rank_source или rank_dest может быть возвращено значение MPI_PROC_NULL, которые отмечают, что источник или приёмник при сдвиге выходят за допустимые пределы.
Пример: На основе группы из 8 процессов создали декартову топологию: {2,4}, определим смещение disp =1
0 1 2 3 0 проц. получает от проц. -1 и отправляет проц. 4 1 проц. получает от проц. -1 и отправляет проц. 5 4 5 6 7 Rank_source 4 rank_dest 1 ----- -1 5 2 ----- -1 6 3 ----- -1 7 4 ----- 0 -1 5 ----- 1 -1 6 ----- 2 -1 7 ----- 3 -1
0 1 2 3 0 проц. получает от проц. 4 и отправляет проц. 4 1 проц. получает от проц. 5 и отправляет проц. 5 4 5 6 7 Rank_source 4 rank_dest 1 ----- 5 5 2 ----- 6 6 3 ----- 7 7 4 ----- 0 0 5 ----- 1 1 6 ----- 2 2 7 ----- 3 3
0 1 2 3 0 проц. получает от проц. -1 и отправляет проц. 1 1 проц. получает от проц. 0 и отправляет проц. 2 4 5 6 7 ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|