Параллельные вычисления с использованием библиотеки PVM

Автор работы: Пользователь скрыл имя, 02 Декабря 2014 в 18:55, курсовая работа

Описание работы

Данная исследовательская работа посвящена ознакомлению с программированием параллельных вычислительных процессов с использованием пакета программ PVM (Parallel Virtual Machine).
Параллельной машиной называют набор процессоров, памяти и некоторые методы коммуникации между ними. Это может быть двухядерный процессор в ноутбуке, многопроцессорный сервер или, например, кластер (суперкомпьютер). Компьютеры, входящие в кластер, вместе намного быстрее, чем по отдельности.

Содержание работы

ВВЕДЕНИЕ………………………………………………………………….3
ГЛАВА 1.ОПИСАНИЕ КЛАСТЕРНЫХ СИСТЕМ И ХАРАКТЕРИСТИКА БИБЛИОТЕК ПАРАЛЛЕЛИЗМ………………….4
1.1. ТИПЫ КЛАСТЕРНЫХ СИСТЕМ……………………………...……..4
1.2. ПОПУЛЯРНЫЕ БИБЛИОТЕКИ ПАРАЛЛЕЛИЗМА.
АНАЛОГИ PVM…………………………………………………..……….7
1.3. ОПИСАНИЕ СИСТЕМЫ PVM……………………………………...13
ГЛАВА 2. ОРГАНИЗАЦИЯ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ…….16
2.1. ОПИСАНИЕ ОБОРОДУВАНИЯ И ПРОГРАММНОГО
ОБЕСПЕЧЕНИЯ………………………………………………………......16
2.2. УСТАНОВКА И НАСТРОЙКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ КЛАСТЕРА………………………………………………………………....17
2.3. ГИПОТЕЗА ГОЛЬДБАХА…………………………………………....21
2.4. ПРОЦЕСС КОМПИЛЯЦИИ СОБСТВЕННОЙ ПРОГРАММЫ ДЛЯ РАБОТЫ С PVM…………………………………...……………………....22
2.5. ВЫПОЛНЕНИЕ ПРОГРАММЫ…………………………………......23
ЗАКЛЮЧЕНИЕ…………………………………………………………….26
СПИСОК ЛИТЕРАТУРЫ………………………………

Файлы: 1 файл

Kursovaya_Markelov_proverka.doc

— 2.33 Мб (Скачать файл)

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

В середине 90-х годов, когда появился HPF, с ним связывались большие надежды, однако трудности с его реализацией пока что не позволили создать достаточно эффективных компиляторов. Опыт работы с системой показал, что в большинстве случаев эффективность параллельных HPF-программ значительно ниже, чем MPI-программ.

1.3. ОПИСАНИЕ СИСТЕМЫ PVM.

PVM (Параллельная Виртуальная  Машина) - это пакет программ, который  позволяет использовать связанный  в локальную сеть набор разнородных  компьютеров, работающих под операционной  системой Unix, FreeBSD, Linux, Windows NT как один большой параллельный компьютер. Таким образом, проблема больших вычислений может быть весьма эффективно решена за счет использования совокупной мощности и памяти большого числа компьютеров. Пакет программ PVM легко переносится на любую платформу.

Проект PVM был создан в 1989 году профессором университета Эмори г. Атланта Vaidy Sunderman и лабораторией Oak Ridge National Laboratory. Первый релиз был запущен в марте 1991. Комплекс PVM обеспечивает работу параллельных программ в гетерогенных (разнородных) вычислительных средах. PVM объединяет множество разнородных вычислительных узлов в один огромный ресурс. В системе возможно создание приложений как типа SPMD (одна параллельная программа - много потоков данных), так и типа MPMD (много параллельных программ - много потоков данных). Она совместима с приложениями, написанными на разных языках программирования (например, С.С++. Fortran) и корректно преобразует данные при передаче их между узлами различной архитектуры. PVM изначально является открытой и свободно распространяемой системой.

Главными принципами построения библиотеки PVM являются:

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

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

3. Процесс-ориентированные  вычисления. Единицей параллелизма  в PVM является подпроцесс, выполняющийся параллельно. Подпроцесс может обмениваться данными с другими подпроцессами. Размер передаваемых данных между подпроцессами ограничен только объемом доступной памяти.

4. Поддержка гетерогенных  вычислений. Библиотека PVM поддерживает гетерогенные аппаратные платформы, сети и программы-приложения. Возможно передавать сообщения, содержащие несколько типов данных, которые будут приведены к машинно-ориентированной форме.

5. Поддержка многопроцессорной  обработки. Библиотека PVM поддерживает существующий механизм передачи сообщений и в многопроцессорных компьютерах. 
 
Среда разработки PVM состоит из двух частей. Первая включает в себя специальную программу daemon, отвечающую за включение данного компьютера в параллельную виртуальную машину, средства запуска задач и подзадач, распределения загрузки процессоров, передачи сообщений и добавления (исключения) процессоров в виртуальной машине. Вторая часть состоит из набора подпрограмм, обеспечивающий полный перечень функций для запуска подпроцессов и обмена данных между ними.

Система PVM состоит из двух частей. Первая часть – это «демон» под названием pvmd3 – часто сокращается как pvmd – который устанавливается на все компьютеры, создающие виртуальную машину (примером программы демона может быть почтовая программа, выполняющаяся в фоновом режиме и обрабатывающая всю входящую и исходящую почту компьютера). Разработан pvmd3 таким образом, чтобы любой пользователь с достоверным логином мог инсталлировать его на машину. Когда пользователь желает запустить приложение PVM, он прежде всего создает кластер. После чего приложение PVM может быть запущено с любого UNIX-терминала на любом из хостов. Несколько пользователей могут конфигурировать перекрывающиеся виртуальные машины, каждый пользователь может последовательно запустить несколько приложений PVM.

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

 

 

ГЛАВА 2. ОРГАНИЗАЦИЯ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ

 

2.1. ОПИСАНИЕ ОБОРОДУВАНИЯ И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.

 

        Кластер включает в себя всего 2 компьютера: Acer Aspire 5755G, Samsung NP300V5A. Компьютеры имеют идентичные технические характеристики.

Технические характеристики Acer Aspire 5755G и Samsung NP300V5A:

  • Процессор - Intel Core i5 2410M 2,3 ГГц;
  • Оперативная память - 4096 Мб. DDR3;
  • Сетевой адаптер - 10/100 Мбит/сек.

Используемое программное обеспечение:

  • Red Hat Linux 6.5
  • Компилятор: GCC (GNU Compiler Collection) v.4.4.7
  • Интерфейс управления кластером: консоль PVM 3.4.6, GNU bash, version 3.2.48.

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

2.2 УСТАНОВКА И НАСТРОЙКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ КЛАСТЕРА.

1) Установка операционной  системы.

На узлы кластера была установлена Red Hat Enterprise Linux 6.5, в состав которой входит современный дистрибутив. Система отличается стабильной работой, удобным современным графическим интерфейсом (Рис.3).

Рис. 3 - Графический интерфейс Red Hat Enterprise Linux 6.5

2)Установка и настройка PVM.

PVM версии 3.4.6. была скачана с  официального сайта: http://www.netlib.org/pvm3/index.html. Скачанный архив устанавливается в (/usr/share/pvm3).  В конфигурационный файл командного интерпретатора пользователя bash (/home/master/.bashrc) добавлены следующие строчки:

#pvm configuration

export PVM_ROOT=/usr/share/pvm3

if [ -z $PVM_ROOT ]; then

    if [ -d ~/pvm3 ]; then

        export PVM_ROOT=~/pvm3

    else

        echo "Warning - PVM_ROOT not defined"

        echo "To use PVM, define PVM_ROOT and rerun your .bashrc"

    fi

fi

if [ -n $PVM_ROOT ]; then

    export PVM_ARCH=`$PVM_ROOT/lib/pvmgetarch`

    export PATH=$PATH:$PVM_ROOT/lib/$PVM_ARCH  # arch-specific

    export PATH=$PATH:$PVM_ROOT/bin/$PVM_ARCH

fi

export PVM_PATH=$PVM_ROOT/bin/$PVM_ARCH

export PVM_DPATH=/usr/share/pvm3/lib/pvmd

export PVMHOSTFILE=/home/master/.rhosts

 

 

 

Рис. 5 - Содержание файла .bashrc.

 

В каталоге (usr/share/pvm3/) выполняем команду для сборки:

make

По окончании ее работы PVM будет готова к использованию. (На одном из этапов выполнения, команда завершилась выходом с ошибкой из-за отсутствия библиотеки m4_1.4.13-2_х64_х86.rpm, которую необходимо установить с локального репозитория.)

На этом процесс установки и настройки PVM завершен. Для продолжения работы, данная конфигурация была скопирована на второй узел кластера.

3) Установка и конфигурирование RSH.

Для коммуникаций, PVM использует RSH.

RSH расшифровывается как Remote SHell - протокол, позволяющий подключаться удаленно  к устройству и выполнять на  нем команды. Обычно RSH-клиент запускается в консоли, и ответ на команду выводит прямо в экран консоли. Протокол RSH не является защищенным - данные об авторизации и передаваемые данные не шифруются.

  1. Менеджером пакетов в графическом интерфейсе  был установлен xinet.d из локального репозитория Red Hat Linux 6.5 Enterprise
  2. Через консоль пользователем root был  установлен пакет rsh-клиент из дистрибутива Red Hat Linux 6.5 Enterprise: rpm –i rsh-0.17-14.х64_х86.rpm
  3. Через консоль пользователем root был установлен пакет rsh-сервер из дистрибутива Red Hat Linux 6.5 Enterprise: rpm –i rsh-server-0.17-14.х64_х86.rpm
  4. Пользователем root сконфигурированы файлы /etc/xinet.d/rexec, /etc/xinet.d/rlogin, /etc/xinet.d/rsh следующим образом: опция disable установлена в значение no.
  5. Перезапущен xinet.d (/etc/rc.d/init.d/./xinet.d restart)
  6. Пользователем master в его домашнем каталоге создан файл .rhosts (пример строки файла: redhatpc-1 master). Имена узлов и имена пользователей должны быть разделены табуляцией. Файл должен обязательно заканчивать символом конца файла. Для этого последняя строка файла должна быть пустой.
  7. Установите на файл .rhosts следующие права:

chmod 600 /home/master/.rhosts

  1. В файле /etc/hosts указаны все узлы кластера.(redhatpc-1, redhatpc-2).
  2. Пользователем master проверена работоспособность rsh (команда rsh redhatpc-1 должна пропускать на redhatpc-1 без запроса пароля).

После настройки и проверки работоспособности RSH, PVM была вызвана в командной строке:

>pvm

Командой add redhatpc-2 был добавлен 2 узел в кластер.(Рис.4).

                Рис. 5 - Кластер готов к работе.

 

2.3 ГИПОТЕЗА ГОЛЬДБАХА.

Тестирование работы PVM было проведено на основе работы программы, которая повторяет гипотезу Гольдбаха. Она гласит: любое чётное число, начиная с 4, можно представить в виде суммы двух простых чисел. В программе мы находим множество простых чисел, затем сумму двух простых чисел из множества проверяем на равенство с четным числом. Данные, которые удовлетворяют определению гипотезы Гольдбаха, заносятся в массив. В конце программы выводится время выполнения, затраченное на выполнения алгоритма до заданного числа.

Для того, чтобы программа работала на кластере, ее необходимо распараллелить. Распараллеливание производится с использованием библиотеки PVM и ее функций.

2.4 ПРОЦЕСС КОМПИЛЯЦИИ СОБСТВЕННОЙ ПРОГРАММЫ ДЛЯ РАБОТЫ С PVM.

 

Библиотечные функции PVM легко интегрировать в С++ среду. Префикс pvm_ в имени каждой функции позволяет не забыть о ее принадлежности соответствующему пространству имен. Для использования PVM-функций необходимо включить в программу заголовочный файл “pvm3.h” и скомпоновать ее с библиотекой libpvm. Чтобы скомпилировать программу с данной библиотекой, необходимо ввести команду:

>gcc –o mypvm_program –I $PVM_ROOT/include mypvm_program.c –I$PVM_ROOT/lib –lpvm3

Самыми распространенными PVM-функциями являются pvm_mytid(), pvm_spawn(), pvm_initsend(), pvm_pkint(), pvm_send(), pvm_recv(), pvm_exit(). Функция pvm_mytid() возвращает индентификатор вызывающей задачи. PVM-система связывает идентификатор задачи с каждым процессом, который ее создает. Идентификатор задачи используется для отправки сообщений задачам, получения сообщений от других задач и т. п.. Любая PVM-задача может связываться с любой другой PVM-задачей до тех пор, пока не получит доступ к ее идентификатору. Функция pvm_spawn( ) предназначена для запуска нового PVM-процесса. В программе master функция pvm_spawn() используется для запуска программы slave. Идентификатор новой задачи возвращается в параметре &Tid вызова функции pvm_spawn (). В PVM-среде для передачи данных между задачами используются буферы сообщений. Каждая задача может иметь один или несколько таких буферов. При этом только один из них считается активным. Перед отправкой каждого сообщения вызывается функция pvm_initsend() , которая позволяет подготовить или инициализировать активный буфер сообщений. Функция pvm_pkint() используется для упаковки числового значения. Функции pvm_send() и pvm_recv() используются для отправки и приема сообщений соответственно. Функции pvm_send() и pvm_recv() содержат идентификатор задачи, получающей данные, и идентификатор задачи, отправляющей данные, соответственно. Функция pvm_upkint() извлекает полученное сообщение из активного буфера сообщений и распаковывает его, сохраняя в массиве типа int.

Обязательным условием для кластеров является компиляция исходных кодов ПО для каждой системы в отдельности, в нашем случае LINUX64. Далее следует разослать на все узлы кластера исполняемый файл, т.е. скопировать его в каталог usr/share/pvm3/bin/LINUX64 на каждом узле.

 

2.5. ВЫПОЛНЕНИЕ ПРОГРАММЫ

 

В начале программа выполняется на одном узле. Проверка производится с разными числами от 2 до n. После выполнения алгоритма, программа возвращает время, которое было затрачено:

 

 

 

 

 

Таблица 1 - Выполнение программы на одном узле кластера.

Информация о работе Параллельные вычисления с использованием библиотеки PVM