Смекни!
smekni.com

«Оптимизация кластерной системы на базе pvm компьютерной лаборатории физического факультета» (стр. 1 из 9)

Министерство образования и науки Российской Федерации

Федеральное агентство по образованию

Государственное образовательное учреждение

высшего профессионального образования

ИВАНОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Кафедра теоретической физики математического и компьютерного моделирования.

Курсовая работа на тему:

«Оптимизация кластерной системы на базе PVM компьютерной лаборатории физического факультета».

Выполнил: студент 4 курса 1 группы:

Медведев Алексей Александрович

Подпись:___________

Научный руководитель:

Гурьянов Андрей Владимирович

Подпись:___________

Работа защищена: «___» _________ 20__г.

Оценка:___________

Заведующий кафедрой:

доцент кафедры теоретической физики

математического и компьютерного моделирования

Логинов Евгений Константинович

Подпись:__________

Иваново 2010

Содержание.

Введение

Математические основы параллельных вычислений.

Реализация параллельных вычислений.

Кластерные системы.

Развитие кластерных систем.

Применение кластерных систем

Типичные задачи для кластерных систем.

Принципы построения кластера.

Производительность кластерной системы. Законы Амдала.

Описание системы PVM.

Оптимизация кластерной системы на базе PVM.

Описание оборудования и предыдущей конфигурации программного обеспечения кластера.

Установка и настройка новой конфигурации программного обеспечения кластера.

Процесс компиляции собственного программного обеспечения для работы с PVM.

Тестирование новой конфигурации вычислительной системы.

Нагрузочное тестирование сети.

Тест имитационной модели метода Монте-Карло.

Заключение

Список литературы

Приложение

Введение.

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

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

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

Соответственно была поставлена задача: оптимизировать работу параллельной вычислительной машины (PVM), созданной на базе компьютерной лаборатории физического факультета, которую можно более эффективно использовать, как для обучения студентов приемам параллельного программирования, так и для решения затратных по времени задач. Таким образом, задачи, которые были поставлены передо мной в моей курсовой являются: изучение основных принципов построения распределенных вычислительных систем, установка графической консоли XPVM, изучение интерфейса и принципов ее работы, повышение эффективности работы PVM.

Математические основы параллельных вычислений

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

для того чтобы произвести второе умножение не требуется знать результата первого, следовательно, оба умножения можно произвести параллельно, и только после этого произвести сложение. Очевидно, не каждое вычисление можно распараллелить. Выражение:

можно вычислить только последовательно, сначала первое умножение, затем второе, и только после этого — сложение.

В основе анализа распараллеливаемости алгоритмов лежит исследование зависимостей по данным между операциями. Если от результата одной операции зависит результат другой, то вторая называется зависимой по данным от первой. Совокупность всех зависимостей по данным представляет собой ориентированный граф без циклов, в котором вершины — операции, а рёбра — зависимости. Длина самого протяжённого пути по этому графу называется минимальной высотой алгоритма и определяет минимально возможное время, за которое теоретически возможно выполнить вычисления по алгоритму. Практически это время не всегда достижимо по той причине, что может потребоваться параллельное вычисление очень большого количества операций, что может оказаться неосуществимым на выделенных вычислительных ресурсах или потребуются очень большие накладки на синхронизацию параллельных вычислительных потоков.

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

Иллюстрация распараллеливания фрагмента алгоритма быстрого преобразования Фурье «бабочка» (рис.1).

Фрагмент алгоритма БПФ (рис.1). Стрелками обозначены зависимости по данным, жирными стрелками — одна из длиннейших цепочек зависимостей. Слева написано, на каком по порядку такте процессора могут выполняться операции.

Последовательный

2 операции за такт максимум

3 операции за такт максимум

Предел параллельности

1. t1=br·qr 2. t2=bi·qi 3. t3=br·qi 4. t4=bi·qr 5. cr=t1−t2 6. ci=t3+t4 7. xr=ar+cr 8. xi=ai+ci 9. yr=ar−cr 10. yi=ai−ci 1. t1=br·qr t2=bi·qi 2. t3=br·qi t4=bi·qr 3. cr=t1−t2 ci=t3+t4 4. xr=ar+cr xi=ai+ci 5. yr=ar−cr yi=ai−ci 1. t1=br·qr t2=bi·qi t3=br·qi 2. t4=bi·qr cr=t1−t2 3. ci=t3+t4 xr=ar+cr yr=ar−cr 4. xi=ai+ci yi=ai−ci 1. t1=br·qr t2=bi·qi t3=br·qi t4=bi·qr 2. cr=t1−t2 ci=t3+t4 3. xr=ar+cr xi=ai+ci yr=ar−cr yi=ai−ci

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

Реализация параллельных вычислений.

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

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

Он реализуется внутри одного потока исполнения. Возможность однопоточного параллельного исполнения почти целиком лежит на архитектуре микропроцессора — именно она определяет способность микропроцессора выполнять инструкции параллельно.

Однопоточный параллелизм обладает своими достоинствами и недостатками. Достоинства:

- отсутствие необходимости синхронизации — все операции выполняются внутри одного потока, и, следовательно, в строго определённой последовательности.

- отсутствие необходимости поддержки параллелизма на уровне операционной системы.

- отсутствие необходимости в средствах управления разделяемыми ресурсами.

Недостатки:

- затруднённость использования в алгоритмах с условными переходами.

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

Многопоточный параллелизм — использование нескольких потоков для достижения параллельного исполнения операций. Для того чтобы обеспечить многопоточный параллелизм необходимо создать систему с несколькими процессорами или процессорными ядрами. Были разработаны специальные технологии для создания многопроцессорных систем. Которые позволяли обрабатывать данные параллельно, а, следовательно, быстрее. Соответственно создавались операционные системы, поддерживающие многопроцессорные технологии. Такие как: Solaris (Sun Microsystems), Unix-подобные OS: Irix (SGI), AIX (IBM); Linux RedHat; Windows XP и др. В подобного рода системах существует такое понятие как поток. Поток (thread) — это последовательность инструкций выполняемых в пределах контекста процесса. Эти операционные системы поддерживает многопоточные процессы. Слово «многопоточные» подразумевает содержание множества управляемых потоков. Традиционный UNIX процесс содержит один управляемый поток. Многопоточный, в свою очередь, содержит множество потоков, которые выполняются независимо. Так как каждый поток выполняется независимо, распараллеливание кода программы приводит к: улучшению чувствительности приложения, использование многопроцессорности более эффективно, улучшает структуру программы, использование меньше ресурсов системы.