WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     | 1 | 2 || 4 | 5 |   ...   | 24 |

• простота реализации программ (как правило, незначительная модификация последовательных программ);

• простота освоения (стандарт OpenMP 1.1 содержит всего 12 директив, порядка 10 клауз и 15 подпрограмм и функций);

• возможность распараллеливание сверху вниз.

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

Недостатки модели с передачей сообщений:

• затраты на подготовку данных для передачи (в некоторых ситуациях такая подготовка может быть чрезвычайно сложной);

• затраты непосредственно на передачу данных (особенно больших массивов);

• дополнительные затраты оперативной памяти, особенно в модели общей памяти – логически ненужное дублирование данных, но необходимое при использовании такой модели;

• необходимость весьма существенных доработок программ, написание новых модулей и процедур;

• сложна для освоения, так как требует особого «невычислительного» мышления.

Краткое описание OpenMP Обоснование метода добавления директив в текст программ Для распараллеливания в модели общей памяти наиболее эффективным считается механизм нитей.

Существует два противоположных подхода для использования этого механизма:

1) автоматическое распараллеливание компилятором (недостатки:

недостаточная эффективность из-за ограничений существующих компиляторов);

2) полностью «ручное» добавление команд обращения к библиотеке нитей (недостатки: необходимость привлечения системного программирования, непереносимость между платформами).

«Золотая середина» – добавление специальных директивподсказок компилятору о распараллеливании.

До появления OpenMP многие производители компиляторов поддерживали подобные наборы директив, однако эти механизмы были неполны и несовместимы между собой.

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

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

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

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

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

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

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

Директивы – это специальные комментарии в синтаксисе языка программирования Фортран, которые идентифицируются уникальной сигнальной меткой. Метка директивы структурирована так, что директивы трактуются как комментарии. Компиляторы, которые поддерживают интерфейс OpenMP, включают возможность активизировать и разрешать интерпретацию всех директив интерфейса OpenMP в командной строке. Формат директив интерфейса OpenMP следующий:

метка директива [клауза [[,] клауза]...], метка – последовательность символов x$OMP, клауза задает параметры директивы.

Основные директивы и клаузы PARALLEL и END PARALLEL – конструкция определения параллельной области.

DO – директива указывает, что итерации, следующие непосредственно за оператором цикла DO, должны быть выполнены параллельно.

PARALLEL DO – обеспечивает краткое определение параллельной области, которая содержит единственную директиву DO.

CRITICAL и END CRITICAL – эти директивы, обрамляющие код, ограничивают доступ к этому коду только одной нити в одно и то же время.

THREADPRIVATE – устанавливает атрибут доступности PRIVATE поименованному общему блоку нити, в то же время, оставляет этот блок общим в пределах нити (контекстной области).

Клаузы области видимости (PRIVATE, SHARED, REDUCTION).

Общие проблемы распараллеливания в модели общей памяти Факторы, влияющие на производительность в модели общей памяти с использованием интерфейса OpenMP:

• время на организацию и завершение нитей (заведение локальных переменных, установка начальных данных, накопление переменных, перечисленных в клаузе REDUCTION и пр.);

• ожидание в критических секциях;

• операции, требующие синхронизации;

• «последовательные» циклы (параллельные циклы, при описании которых использовалась клауза ORDER);



• работа с внешними устройствами (вывод на экран и пр.);

• задержки при одновременном обращении на чтение несколькими нитями к одной ячейке памяти.

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

Одновременное обращение к внешнему устройству ввода или вывода.

Сложность отладки (необходимость одновременного отслеживания исполнения множества нитей).

Преимущество модели с передачей сообщений при отладке (более явные обращения к памяти).

Тестовый расчет В качестве тестового расчета для проверки правильности работы алгоритма распараллеливания использовалась задача полета несферической оболочки.

Начальная форма оболочки:

R(t = 0, ) = 7 + 0,875cos3 - 0,525cos (см), толщина R = 0,16 см.

г Материал – свинец: (0) = 11,4.

смВ начальный момент оболочка имеет скорость к центру:

v = 5,70686 106 см/с.

-5 / Давление снаружи PE = 0, давление внутри Pi = 3,495 106 V (см3), где V – объем полости.

Сетка сформирована из 6 счетных областей по 2800 ячеек в каждой (сетка матричного типа 140 на 20).

Расчет проводился на регулярной и нерегулярной сетках.

Представлены замеры времени выполнения параллельных областей на 1 и 2 процессорах.

В качестве характеристик эффективности распараллеливания использовались следующие функции:

t1 tS = – ускорение; Ep = 100% – эффективность распаp t p t p p раллеливания.

На 2 процессорах ускорение составило 1,5 (эффективность 75%).

ОБЩАЯ ХАРАКТЕРИСТИКА ПРОГРАММЫ КУРСА «МНОГОПРОЦЕССОРНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ И ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ» В.П. Гергель Нижегородский государственный университет им. Н.И. Лобачевского Анализируя современное состояние компьютерной индустрии, можно отметить, что применение параллельных вычислительных систем (ПВС) является стратегическим направлением развития вычислительной техники. Это обстоятельство вызвано не только принципиальным ограничением максимально возможного быстродействия обычных последовательных ЭВМ, но и практически постоянным существованием вычислительных задач, для решения которых возможностей существующих средств вычислительной техники всегда оказывается недостаточно. Отсюда вытекает значимость проблемы подготовки высококвалифицированных специалистов, способных эффективно использовать высокопроизводительные компьютерные системы для решения важных научно-технических задач с высокой вычислительной трудоемкостью. В свою очередь, это приводит к тому, что учебные дисциплины по тем или иным аспектам параллельных вычислений являются практически обязательными в образовательных программах большинства университетов.

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

1. Проблема получения решений сложных вычислительнотрудоемких научно-технических задач при реалистических временных затратах на основе организации параллельных вычислений для быстродействующих компьютерных систем приобрела в последнее время особую важность и значимость за счет широкого распространения кластерных вычислительных систем (clusters) – современное состояние данного подхода отражено, например, в обзоре, подготовленном под редакцией Barker (2000). Под кластером обычно понимается (см., например, Xu and Hwang (1998), Pfister (1998)) множество отдельных компьютеров, объединенных в сеть, для которых при помощи специальных аппаратно-программных средств обеспечивается возможность унифицированного управления (single system image), надежного функционирования (availability) и эффективного использования (performance). Применение кластеров может в некоторой степени снизить проблемы, связанные с разработкой параллельных алгоритмов и программ, поскольку повышение вычислительной мощности отдельных процессоров позволяет строить кластеры из сравнительно небольшого количества (несколько десятков) отдельных компьютеров (lowly parallel processing). Это приводит к тому, что для параллельного выполнения в алгоритмах решения вычислительных задач достаточно выделять только крупные независимые части расчетов (coarse granularity), что, в свою очередь, снижает сложность построения параллельных методов вычислений и уменьшает потоки передаваемых данных между компьютерами кластера. Вместе с этим следует отметить, что организации взаимодействия вычислительных узлов кластера при помощи передачи сообщений обычно приводит к значительным временным задержкам, что накладывает дополнительные ограничения на тип разрабатываемых параллельных алгоритмов и программ (минимальность информационных потоков передачи данных).

2. Для получения общего представления о состоянии проблематики по параллельным вычислениям могут быть использованы два основных портала глобальной сети Интернет:

• http://www.parallel.ru (российский портал);

• http://homer.csm.port.ac.uk/ieee-tfcc/ (портал международной рабочей группы по кластерам – TFCC–IEEE Computer Society Task Force on Cluster Computing).

На этих же порталах имеется информация об основных исследователях и специалистах в области параллельных технологий и систем.

По рассматриваемой тематике имеется большое количество публикаций; в числе последних и значимых изданий работы Xu and Hwang (1998), Pfister (1998), Buyya R. (1998), Sterling T., Salmon J., Becker D.J., Savarrese D.F. (1999), Wilkinson B., Allen M. (1999). Среди опубликованных за последние годы отечественных учебных пособий: Комолкин А.В., Немнюгин С.А. (1998), Якобовский М.В. (2000), Фурсов В.А. и др. (2000), Гергель В.П., Стронгин Р.Г. (2000).





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

На портале www.parallel.ru упомянуты 3 учебных курса:

• Воеводин Вл.В. Материалы к курсу лекций «Параллельные вычисления, технологии параллельного программирования, параллельные компьютеры и супер-ЭВМ, анализ структуры программ»;

• Ластовецкий А.Л. Интерактивный учебный курс «Программирование параллельных вычислений на неоднородных сетях компьютеров на языке mpC»;

• Комолкин А.В., Немнюгин С.А. Программирование для высокопроизводительных ЭВМ.

Кроме того, в сети Интернет доступна информация о ряде других учебных программ:

• Крутиков М.П. Параллельные вычислительные системы (Институт высокопроизводительных вычислений и баз данных, СанктПетербург, www.csa.ru:81/~mike/edu/parallel.htnl);

• Симонов С.А. Языки и методов параллельного программирования (Институт вычислительной математики и математической геофизики СО РАН, Новосибирск, www.invest.sscc.ru/simonov/exam.htm).

Большую работу по систематизации образовательных программ выполнила экспертная группа Министерства образования РФ по подготовке специалистов в области высокопроизводительных вычислений. В качестве рекомендаций данная группа выдвинула предложения по созданию новых специализаций «Высокопроизводительные вычислительные технологии и системы», «Математическое и программное обеспечение высокопроизводительных вычислительных систем (ВВС)», «ВВС и параллельное программирование», а также сформировала рекомендуемый набор учебных курсов по этим специализациям.

Информация о результатах деятельности рабочей группы представлена, например, в работе А.Н.Тихонова, А.Д.Иванникова, В.Г.Домрачева, А.К. Скуратова, И.В. Ретинской (2001).

Более широко представлены в Интернет зарубежные материалы по обучению. В числе возможных примеров:

1. Introduction to High Performance Computing (Ediburch Parallel Programming Center, www.epcc.ed.ac.uk/epcc-tec/courses/HPCintro.html) 2. Practical Parallel Programming (University of Leeds, www.comp.leeds.ac.uk, раздел MSc/modules_99/so31_comp3580.html) 3. Parallel Computing (Boston University) и др.

Анализируя содержание всех перечисленных учебных курсов, можно отметить следующее:

• во многих курсах проблемы параллельного программирования сводятся к задаче освоения средств программирования (типа библиотек MPI);

• вопросы моделирования вычислений с целью выявления возможных способов эффективного распараллеливания рассматриваются в недостаточно полном объеме;

• лабораторный практикум по параллельному программирования имеет в значительной степени иллюстративный характер (использование простых примеров, задач, методов).

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

• Архитектура параллельных вычислительных систем, • Модели вычислений и методы анализа сложности, • Параллельные методы вычислений, • Параллельное программирование (языки, среды разработки, библиотеки).

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

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

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

Именно к указанному типу относится учебный курс «Многопроцессорные вычислительные системы и параллельное программирование», который читается для студентов факультета вычислительной математики и кибернетики Нижегородского университета с 1995 г.; с 1999 г. этот курс читается также в Нижегородском государственном техническом университете. В 2001 г. данный курс читается (после соответствующей переработки) для научных сотрудников Института прикладной физики РАН и для работников компании «Интел».

В 2001 г. по курсу было подготовлено учебное пособие «Основы параллельных вычислений» (см. Гергель, Стронгин (2001)), которое на данный момент уже используется в учебном процессе более чем в вузах страны.

Для характеристики содержания курса приведем в кратком виде (до уровня подразделов) учебную программу курса (в полном виде программа курса опубликована в пособии Гергеля, Стронгина (2001):

1. Цели и задачи введения параллельной обработки данных:

1.1. Необходимость использования параллельных вычислений.

1.2. История введения параллелизма.

Pages:     | 1 | 2 || 4 | 5 |   ...   | 24 |










© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.