на главную ] 

Параллельный вычислитель на аппаратной базе локальной сети персональных компьютеров.

Е.С.Борисов

воскресенье, 7 декабря 2003 г.

1 Введение

Вычислительные системы сверхвысокой производительности стоят дорого. Цена таких систем недоступна для большинства образовательных и научно-исследовательских организаций, но часто существует приемлемая альтернатива - кластер.

Кластер это дешёвый вариант MPP. Обычно это сеть из серийных PC или рабочих станций общего назначения, которая объединяется в ''виртуальную многопроцессорную машину''. Для связи узлов используется одна из стандартных сетевых технологий: Ethernet, Myrinet etc. При достаточном числе узлов, такие системы способны обеспечить вполне удовлетворительную производительность.

Можно использовать уже существующую сеть рабочих станций (системы такого типа иногда называют COW - Cluster Of Workstations). При этом узлы могут иметь различную архитектуру, производительность, работать под управлением разных OC (MS Windows, Linux, FreeBSD).

Если узлы планируется использовать только в составе кластера, то их можно существенно облегчить (отказаться от жёстких дисков, видеокарт, мониторов и т.п.). В облегчённом варианте узлы будут загружаться и управляться через сеть. Количество узлов и требуемая пропускная способность сети определяется задачами, которые планируется запускать на кластере.

2 MPI

Message Passing Interface (MPI) [4] это популярный стандарт для построения параллельных программ по модели обмена сообщениями. Этот стандарт обычно используют в параллельных системах с распределённой памятью (кластера и т.п.).

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

Разными коллективами разработчиков написано несколько программных пакетов [2], удовлетворяющих спецификации MPI (MPICH, LAM, HPVM etc.). Существуют стандартные ''привязки'' MPI к языкам С, С++, Fortran 77/90, а также реализации [2] почти для всех суперкомпьютерных платформ и сетей рабочих станций.

3 Работа с MPI на кластере

В данной работе для прогона контрольных примеров был использован кластер на основе сети PC и библиотека MPICH [3], созданная авторами спецификации MPI. Этот пакет можно получить и использовать бесплатно. В состав MPICH входит библиотека программирования, загрузчик приложений, утилиты. Существуют реализации этой коммуникационной библиотеки для многих UNIX-платформ, MS Windows.

Для запуска MPI-программ на гомогенном (состоящем из одинаковых узлов, работающих под одной OS) кластере необходимо проделать такие шаги :

3.1 Пример MPI-программы

Рассмотрим классический пример параллельного программирования - вычисление $\pi$. Число $\pi$ будем вычислять как определённый интеграл :


\begin{displaymath}\int\limits_{0}^{1}{\frac{4}{1+x^2}}dx = \left. 4\cdot \arctg(x)\right\vert _0^1 = \pi\end{displaymath}

Согласно правилу прямоугольников интеграл можно заменить суммой:


\begin{displaymath}\pi \approx h \cdot \sum\limits_{i=1}^{n}\left(\frac{4}{1+x_i...
...h = \frac{1}{n}\ ;\
x_i = \left( i - \frac{1}{2}\right)\cdot h\end{displaymath}

Текст программы [ здесь ]

3.2 Результаты счета


Литература

1
Коммуникационные библиотеки - http://www.parallel.ru/tech/tech_dev/ifaces.html

2
Технология параллельного программирования MPI - http://parallel.ru/tech/tech_dev/mpi.html

3
MPICH - http://www-unix.mcs.anl.gov/mpi/mpich

4
MPI - http://www.mpi-forum.org

5
FreeBSD - http://www.freebsd.org


Evgeny S. Borisov
2003-12-07
При использовании материалов этого сайта, пожалуйста вставляйте в свой текст ссылку на мою статью.