LINUX.ORG.RU

Настроить топологию кольцо с mpich


0

0

Доброй ночи!

Разбираюсь с параллельным программированием. Нашел примеры, в которых говорится, что они расчитаны на топологию кольцо с четырмя процессорами. Удастся ли мне в компьтерном классе с пакетом mpich под Линукс организовать такую топологию, если нет многопроцессорных компьютеров? (Все компы с одним процессором.) Если удастся, то нужно ли производить какие-то особые настройки после (на этапе) установки?

Порекомендуйте литературу по работе с пакетом mpich и распаралеливанием простых алгоритмов попроще для начинающих.

Спасибо за ответы.

anonymous

Алгоритм расчитанные на топологию - это значит что адресование процесоров такое, чтобы минимизировать время общения между ними. Например если процесор (компьютер) 1 часто меняется данными с процессором (компьютером) 2 то имело бы смысл их расположить близко (например воткнуть сетевой кабель из карточки в компе 1 в карточку в компе 2).

Если алгоритм рассчитан на какую-то конкретную топологию, то он наоборот подстраивается под нее, то есть старается чтобы процесоры (компьютеры) общались между собой таким образом чтобы общение это было между как можно более близкими к себе компьютерами.

Например кольцо выглядит так

0<->1<->2<->...<->n-1

при этом компы n-1 и 0 также подсоединены (отсюда и кольцо).

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

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

Можешь адресовать компы как будто бы они были в такой топологии. При этом сам алгоритм будет работать, но может быть неэффективным (из-за долгих communication).

Если ты знаешь физическую топологию сети (как который комп с каким подключен), то где-то там в MPI были функции позволяющие ему об этом сказать http://www.mpi-forum.org/docs/mpi-11-html/node132.html#Node132. Если не знаешь то крути свои. Вроде бы за бабки есть какие-то программы которые эту топологию вычисляют, но IMHO проще спросить.

Про алгоритмы можешь посмотреть тут:

http://brylant.iit.pwr.wroc.pl/~srahuzau/par.chm

(лучше отсоси книжку потому что я ее через какое-то время оттуда прибью)

Про MPI все что нужно есть в нете:

http://www-unix.mcs.anl.gov/mpi/

Для упражнений вполне достаточно принять что твоя топология абстрактна и адресовать процесоры так как они адресуются в описании алгоритма. Если же ты знаешь физическую топологию сети в своей лабе (какой комп к чему подключен и как) можно пробовать mpich'у об этом сказать и использовать соответствующие алгоритмы.

Надеюсь не намешал.

dissident ★★
()
Ответ на: комментарий от dissident

Абстрактно в том смысле что если у тебя есть алгоритм для ring который посылает данные от процессора 0000 процессору 0001 то так и посылай

if (rank == 0)
send to 1
else if (rank = 1)
receive from 0

и т.д. и т.п.

Да алгоритм будет рассчитан на то что 0000 и 0001 находятся рядом, но если ты просто упражняешься то какая тебе разница как на самом деле соединены компьютеры? "Топологических функций" в MPI я никогда не употреблял, поэтому тут не помогу.

dissident ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.