Автор работы: Пользователь скрыл имя, 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
СПИСОК ЛИТЕРАТУРЫ………………………………
Программы на языке HPF существенно короче функционально идентичных программ. По-видимому, языки этого типа будут активно развиваться и постепенно вытеснят из широкого обращения пакеты передачи сообщений. Последним будет отводиться роль, которая в современном программировании отводится ассемблеру: к ним будут прибегать лишь для разработки языков высокого уровня и при написании библиотечных подпрограмм, от которых требуется максимальная эффективность.
В середине 90-х годов, когда появился HPF, с ним связывались большие надежды, однако трудности с его реализацией пока что не позволили создать достаточно эффективных компиляторов. Опыт работы с системой показал, что в большинстве случаев эффективность параллельных HPF-программ значительно ниже, чем MPI-программ.
PVM (Параллельная Виртуальная
Машина) - это пакет программ, который
позволяет использовать
Проект PVM был создан в 1989 году профессором университета Эмори г. Атланта Vaidy Sunderman и лабораторией Oak Ridge National Laboratory. Первый релиз был запущен в марте 1991. Комплекс PVM обеспечивает работу параллельных программ в гетерогенных (разнородных) вычислительных средах. PVM объединяет множество разнородных вычислительных узлов в один огромный ресурс. В системе возможно создание приложений как типа SPMD (одна параллельная программа - много потоков данных), так и типа MPMD (много параллельных программ - много потоков данных). Она совместима с приложениями, написанными на разных языках программирования (например, С.С++. Fortran) и корректно преобразует данные при передаче их между узлами различной архитектуры. PVM изначально является открытой и свободно распространяемой системой.
Главными принципами построения библиотеки PVM являются:
1. Программа-приложение
2. Неограниченный контроль аппаратного обеспечения. В программе-приложении возможно определить атрибуты данного процессора. При необходимости подзадача может быть размещена на конкретном процессоре либо система распределения вычислительной нагрузки автоматически поместит задачу на наиболее подходящем процессоре.
3. Процесс-ориентированные вычисления. Единицей параллелизма в PVM является подпроцесс, выполняющийся параллельно. Подпроцесс может обмениваться данными с другими подпроцессами. Размер передаваемых данных между подпроцессами ограничен только объемом доступной памяти.
4. Поддержка гетерогенных вычислений. Библиотека PVM поддерживает гетерогенные аппаратные платформы, сети и программы-приложения. Возможно передавать сообщения, содержащие несколько типов данных, которые будут приведены к машинно-ориентированной форме.
5. Поддержка многопроцессорной
обработки. Библиотека PVM поддерживает существующий механизм
передачи сообщений и в многопроцессорных
компьютерах.
Среда разработки PVM состоит из двух частей.
Первая включает в себя специальную программу
daemon, отвечающую за включение данного
компьютера в параллельную виртуальную
машину, средства запуска задач и подзадач,
распределения загрузки процессоров,
передачи сообщений и добавления (исключения)
процессоров в виртуальной машине. Вторая
часть состоит из набора подпрограмм,
обеспечивающий полный перечень функций
для запуска подпроцессов и обмена данных
между ними.
Система PVM состоит из двух частей. Первая часть – это «демон» под названием pvmd3 – часто сокращается как pvmd – который устанавливается на все компьютеры, создающие виртуальную машину (примером программы демона может быть почтовая программа, выполняющаяся в фоновом режиме и обрабатывающая всю входящую и исходящую почту компьютера). Разработан pvmd3 таким образом, чтобы любой пользователь с достоверным логином мог инсталлировать его на машину. Когда пользователь желает запустить приложение PVM, он прежде всего создает кластер. После чего приложение PVM может быть запущено с любого UNIX-терминала на любом из хостов. Несколько пользователей могут конфигурировать перекрывающиеся виртуальные машины, каждый пользователь может последовательно запустить несколько приложений PVM.
Вторая часть системы - это библиотека подпрограмм интерфейса PVM. Она содержит функционально полный набор примитивов, которые необходимы для взаимодействия между задачами приложения. Эта библиотека содержит вызываемые пользователем подпрограммы для обмена сообщениями, порождения процессов, координирования задач и модификации виртуальной машины.
Кластер включает в себя всего 2 компьютера: Acer Aspire 5755G, Samsung NP300V5A. Компьютеры имеют идентичные технические характеристики.
Технические характеристики Acer Aspire 5755G и Samsung NP300V5A:
Используемое программное обеспечение:
Эта конфигурация программного обеспечения кластерной системы позволяет использовать пропускную способность сетевого интерфейса с максимальной скоростью, что хорошо сказывается на производительности установки, когда на ней производятся связные вычислительные задачи, требующие большого количества синхронизаций друг с другом.
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/
#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/
export PATH=$PATH:$PVM_ROOT/lib/$PVM_
export PATH=$PATH:$PVM_ROOT/bin/$PVM_
fi
export PVM_PATH=$PVM_ROOT/bin/$PVM_
export PVM_DPATH=/usr/share/pvm3/lib/
export PVMHOSTFILE=/home/master/.
Рис. 5 - Содержание файла .bashrc.
В каталоге (usr/share/pvm3/) выполняем команду для сборки:
make
По окончании ее работы PVM будет готова к использованию. (На одном из этапов выполнения, команда завершилась выходом с ошибкой из-за отсутствия библиотеки m4_1.4.13-2_х64_х86.rpm, которую необходимо установить с локального репозитория.)
На этом процесс установки и настройки PVM завершен. Для продолжения работы, данная конфигурация была скопирована на второй узел кластера.
3) Установка и конфигурирование R
Для коммуникаций, PVM использует RSH.
RSH расшифровывается как Remote SHell - протокол,
позволяющий подключаться
chmod 600 /home/master/.rhosts
После настройки и проверки работоспособности RSH, PVM была вызвана в командной строке:
>pvm
Командой add redhatpc-2 был добавлен 2 узел в кластер.(Рис.4).
2.3 ГИПОТЕЗА ГОЛЬДБАХА.
Тестирование работы PVM было проведено на основе работы программы, которая повторяет гипотезу Гольдбаха. Она гласит: любое чётное число, начиная с 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(
Обязательным условием для кластеров является компиляция исходных кодов ПО для каждой системы в отдельности, в нашем случае LINUX64. Далее следует разослать на все узлы кластера исполняемый файл, т.е. скопировать его в каталог usr/share/pvm3/bin/LINUX64 на каждом узле.
2.5. ВЫПОЛНЕНИЕ ПРОГРАММЫ
В начале программа выполняется на одном узле. Проверка производится с разными числами от 2 до n. После выполнения алгоритма, программа возвращает время, которое было затрачено:
Таблица 1 - Выполнение программы на одном узле кластера.
Информация о работе Параллельные вычисления с использованием библиотеки PVM