next up previous contents
Next: Совместимость с MPI Up: Топологии процессов Previous: Введение   Contents

Виртуальные топологии

Взаимосвязь процессов может быть представлена графом. Узлы такого графа представляют процессы, а ребра соответствуют связям между процессами. Стандарт MPI предусматривает передачу сообщений между любой парой процессов в группе. Не обязательно указывать канал связи явно. Следовательно, отсутствие канала связи в граф-схеме процессов не запрещает соответствующим процессам обмениваться сообщениями. Из этого следует , что такая связь в виртуальной топологии может отсутствовать, например, из-за того, что топология не представляет удобного способа обозначения этого канала обмена. Возможным следствием такого отсутствия может быть то, что автоматическая программа для размещения процессов по процессорам (если такая будет существовать) не будет учитывать эту связь, и уменьшится эффективность вычислений.

Ребра в графе не взвешены, поэтому процесс может изображаться только подключенным или не подключенным.

Объяснение: Опыт с подобными методами в PARMACS [5,8] показывает, что графовое представление вполне достаточно для построения хороших схем. Более подробное описание излишне сложно для пользователя и сделало бы интерфейсные функции MPI существенно сложнее.[]

Графовое представление топологии пригодно для всех приложений. Однако во многих приложениях графовая структура является регулярной и довольно простой, поэтому использование всех деталей графового представления будет неудобным и малоэффективным в использовании.

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

Координаты в декартовой системе нумеруются от 0. Это означает, например, что соотношение между номером процесса в группе и координатами в решетке ($2 \times 2$) для четырех процессов будет следующим:


coord (0,0): rank 0
сoord (0,1): rank 1
сoord (1,0): rank 2
сoord (1,1): rank 3



Alex Otwagin 2002-12-10