Теория и практика параллельных вычислений


Декартовы топологии (решетки) - часть 3


лекцию 3). В зависимости от периодичности измерения решетки, по которому выполняется сдвиг, различаются два типа данной операции:

  • циклический сдвиг на k элементов вдоль измерения решетки – в этой операции данные от процесса i пересылаются процессу , где dim есть размер измерения, вдоль которого производится сдвиг;
  • линейный сдвиг на k позиций вдоль измерения решетки – в этом варианте операции данные от процесса i пересылаются процессу i+k (если таковой существует).

Функция MPI_Cart_shift обеспечивает получение рангов процессов, с которыми текущий процесс (процесс, вызвавший функцию MPI_Cart_shift) должен выполнить обмен данными:

int MPI_Card_shift(MPI_Comm comm, int dir, int disp, int *source, int *dst),

где

  • comm — коммуникатор с топологией решетки;
  • dir — номер измерения, по которому выполняется сдвиг;
  • disp — величина сдвига (при отрицательных значениях сдвиг производится к началу измерения);
  • source — ранг процесса, от которого должны быть получены данные;
  • dst — ранг процесса, которому должны быть отправлены данные.

Следует отметить, что функция MPI_Cart_shift только определяет ранги процессов, между которыми должен быть выполнен обмен данными в ходе операции сдвига. Непосредственная передача данных может быть выполнена, например, при помощи функции MPI_Sendrecv.




Начало  Назад  Вперед



Книжный магазин