Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LabPract_SPP

.pdf
Скачиваний:
20
Добавлен:
18.03.2015
Размер:
648.64 Кб
Скачать

Содержание

Введение…………………………………………........................

4

Лабораторная работа №1. Автоматическое распараллели-

 

вание программ и создание многопоточных приложений

 

средствами OpenMP…………………………………………….

5

Лабораторная работа № 2. Создание многопоточных при-

 

ложений средствами Windows Threading API ………………..

17

Лабораторная работа № 3. Создание многопоточных при-

 

ложений средствами POSIX Threads ………………………….

20

Лабораторная работа № 4. Использование инструментов

 

Intel Thread Checker, Intel Thread Profiler и Intel VTune Per-

 

formance Analyzer для отладки и оптимизации многопоточ-

 

ных приложений ………………………………………………..

23

Лабораторная работа № 5. Создание и отладка параллель-

 

ных программ для кластерных систем средствами MPI с ис-

 

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

28

Лабораторная работа № 6. Создание и запуск распределен-

 

ных вычислительных программ в грид-системе, построенной

 

с использованием Globus Toolkit ………………………………

32

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

37

Приложение А…………………………………………………..

38

Приложение Б…………………………………………………..

40

3

Введение

Лабораторный практикум предназначен для студентов инженерных специальностей, специализирующихся в области прикладной и вычислительной математики. Входящие в состав практикума лабораторные работы охватывают все основные виды средств разработки и отладки параллельных приложений: средства разработки и отладки многопоточных программ, средства разработки параллельных программ для кластерных систем и суперкомпьютеров, средства работы с распределенными вычислительными системами, а также параллельные математические библиотеки. Предполагается, что студенты уже имеют представление о различных видах параллельных вычислительных систем и обладают начальными умениями в области написания простейших параллельных программ. Данные знания и умения должны быть получены студентами при изучении предшествующих дисциплин «Многопроцессорные системы и параллельное программирование» или «Основы суперкомпьютерных технологий». Также предполагается, что студенты владеют программированием на языке С/С++ в объеме университетского курса.

Лабораторный практикум состоит из шести лабораторных работ, связанных между собой. Практикум предполагает, что студенты получают индивидуальное задание на разработку вычислительной программы, которую они реализуют в многопоточном, параллельном и распределенном вариантах. Многопоточные версии создаются с использованием трех различных средств разработки (Windows Threading API, POSIX Threads и OpenMP), а затем отлаживаются и оптимизируются с использованием инструментов корпорации Intel (Intel Thread Checker, Intel Thread Profiler и Intel VTune Performance Analyzer). Параллельные варианты программы разрабатываются с использованием интерфейса MPI и библиотек ScaLAPACK. Запуск распределенного варианта программы осуществляется на грид-системе, построенной с использованием инструментов Globus Toolkit.

4

Лабораторная работа № 1

АВТОМАТИЧЕСКОЕ РАСПАРАЛЛЕЛИВАНИЕ ПРОГРАММ И СОЗДАНИЕ МНОГОПОТОЧНЫХ ПРИЛОЖЕНИЙ СРЕДСТВАМИ OPENMP

1. Цель работы

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

2. Теоретическая часть

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

2.1. Уравнение теплопроводности

Уравнение теплопроводности для двумерной области:в декартовой системе координат

c(u) (u)

u

 

 

(u)

u

 

 

(u)

u

f (x, y,t),

 

 

 

 

 

 

 

 

 

 

 

t

 

x

 

x

 

y

 

y

 

в полярной системе координат

 

 

 

 

 

 

c(u) (u)

u

 

1

(u)r

u

 

1

(u)

u

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

r r

 

r

 

r 2

 

 

 

 

 

 

 

 

 

(r, ) ,

t 0.

 

 

(x, y) ,

t 0 ;

 

f (r, ,t),

 

 

 

 

 

 

Здесь u – температура, с – теплоемкость, – плотность, – коэффициент теплопроводности.

Постановка краевой задачи для уравнения теплопроводности предполагает задание начального условия в следующем виде:

в декартовой системе координат

u(x, y,t)

 

t 0 (x, y),

(x, y) ;

 

 

 

в полярной системе координат

 

5

u(r, ,t)

 

t 0 u0 (r, ),

(r, ) ,

 

 

 

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

первого рода – на ограничивающей поверхности известно значение температуры

u(x, y,t)

 

u (x, y,t),

(x, y) ,

t 0

 

 

 

 

или

 

 

u(r, ,t)

 

u (r, ,t),

(r, ) ,

t 0 ;

 

 

 

 

второго рода – на ограничивающей поверхности известно значение плотности теплового потока

(u)

u

 

 

 

q (x, y,t),

(x, y) ,

t 0

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

или

 

 

 

 

 

 

(u)

u

 

 

 

q (r, ,t),

(r, ) ,

t 0

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(здесь n – внешняя нормаль к поверхности Г);

третьего рода – интенсивность теплообмена на границе подчиняется закону Ньютона

(u)

u

 

 

(u u f ),

(x, y)

 

 

n

или

 

 

 

 

 

 

 

 

 

 

(u)

u

 

 

(u u f ),

(r, ) .

 

 

n

 

 

 

 

 

 

 

 

 

 

 

Здесь u – значение температуры на границе области, – коэффициент теплоотдачи, u f – температура омывающей поверхность Г среды.

В случае установившегося теплового режима уравнение теплопроводности превращается в уравнение Пуассона:

в декартовой системе координат

 

(u)

u

 

 

(u)

u

f (x, y),

(x, y) ;

 

 

 

 

 

 

 

 

x

 

x

 

y

 

y

 

 

в полярной системе координат

6

1

(u)r

u

 

1

(u)

u

f (r, ),

(r, )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r r

 

r

 

r 2

 

 

 

 

(при этом изменен знак у внутренних источников тепловыделения).

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

2.2. Конечно-разностные схемы

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

Пусть задана конечно-разностная сетка с постоянными шагами по всем координатным направлениям: x – по переменной х, y – по переменной y, t – по временной переменной:

{( xi i x, y j j y, tn n t), i 0..I 1, j 0..J 1, n 0..N 1}.

Значение искомой функции u в узлах сетки xi , y j , tn будем традиционно обозначать как uin, j .

Явная конечно-разностная схема предполагает, что правая часть уравнения теплопроводности аппроксимируется значениями предыдущего временного слоя:

 

n

 

n uin, j1 uin, j

n

 

 

uin 1, j uin, j

n

 

 

uin, j uin 1, j

 

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i, j

 

i, j

 

t

 

 

 

i

1

, j

 

x2

 

 

i

1

, j

 

x2

 

 

 

 

 

 

 

 

 

2

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

uin, j 1 uin, j

 

n

uin, j uin, j 1

 

n

 

 

 

 

 

i, j

1

 

 

 

 

 

 

i, j

1

 

 

 

 

 

 

fi, j ,

 

 

 

 

 

 

 

y2

 

 

 

 

 

y2

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i 1..I ,

j 1..J ,

n 1..N.

 

 

 

 

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

cn

n

un 1

un

n

 

 

un

un 1

n

 

 

un 1

un 1

i, j

i, j

 

 

i 1, j

i, j

 

 

i, j

i 1, j

i, j

i, j

t

i

1

, j

x2

i

1

, j

x2

 

 

 

2

2

 

 

 

 

 

 

 

 

 

 

 

 

 

7

n 1 i, j 2

uin, j1 uin,1j

y2

i 1..I ,

n

i, j

j 1..J

 

un1

un1

 

 

 

i, j

i, j1

f n1,

1

 

 

 

 

 

 

 

y2

i, j

2

 

 

 

 

 

 

, n 1..N.

Неявная конечно-разностная схема предполагает аппроксимацию правой части уравнения на текущем временном слое:

cn

n

un 1

un

 

 

 

 

un 1

un 1

n

 

 

un 1

un 1

i, j

 

 

 

i, j n

 

 

 

i 1, j

 

 

 

i, j

 

 

i, j

i 1, j

i, j

i, j

t

 

 

 

i

 

1

, j

x2

 

 

i

1

, j

x2

 

 

 

 

 

 

2

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

un 1

un 1

 

 

 

un 1 un 1

 

 

 

 

n

 

1

 

i, j 1

 

i, j

n

 

1

 

i, j

i, j

1

fin, j 1,

 

 

 

 

y2

 

 

 

 

 

 

y2

 

 

 

 

i, j

 

 

 

 

 

 

i, j

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i1..I , j 1..J , n 1..N.

Вприведенных схемах обозначено

cn

c(un

),

n

(un

),

f n

f (x , y

j

,t

n

),

i, j

i, j

 

i, j

i, j

 

i, j

i

 

 

 

 

 

 

un

un

n

1

 

 

 

i 1, j

i, j

 

 

 

 

i

 

, j

 

2

2

 

 

 

 

 

 

 

 

 

 

un

un

n

 

 

1

 

i, j 1

i, j

 

 

 

 

i, j

 

 

2

2

 

 

 

 

 

 

,

,

n 1

i 2, j

n 1

i, j 2

un

un

 

 

,

 

i, j

i 1, j

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

un

un

 

 

 

 

i, j

i, j 1

 

.

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

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

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

 

1

 

1

 

 

1

 

 

1

 

max (u)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

u

 

t

 

 

x

2

y

2

 

,

min c(u) (u)

.

 

2k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

u

 

Неявная схема является безусловно устойчивой, т.е. шаги сетки по пространству и времени можно выбирать независимо, но ее использование приводит к необходимости решения системы линейных алгебраических уравнений (СЛАУ).

8

Численная схема для уравнения Пуассона получается из неявной схемы для уравнения теплопроводности соответствующей редукцией временной переменной и также приводит к необходимости решения СЛАУ.

2.3. Простейшие методы решения СЛАУ

Запишем систему линейных алгебраических уравнений в традиционном виде:

 

Au b,

 

A {aij },

u {ui }, b {bi },

i, j 1,..n.

В лабораторных работах будут использоваться три простейших итерационных метода решения СЛАУ: метод Якоби, метод ГауссаЗейделя и метод последовательной верхней релаксации SOR. Напомним кратко суть этих методов.

Итерации метода Якоби строятся по схеме

 

1

 

aijukj

 

 

 

 

uik 1

 

bi

,

i 1,..., n,

k 0,1,... ,

a

 

 

j i

 

 

 

 

 

ii

 

 

 

 

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

Итерации метода Якоби сходятся с любого начального приближения, если матрица системы имеет строгое диагональное преобладание или является неприводимой с диагональным преобладанием. Другим необходимым и достаточным условием сходимости метода Якоби является положительная определенность матрицы 2D A, где D diag{A}, при условии, что матрица А симметрична и положительно определена.

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

Итерации в методе Гаусса-Зейделя строятся по схеме

uik 1 1 aii

a u

ijj i

k 1

k

j

aiju j

 

j i

 

i 1,..., n,

k 0,1,...

b ,

i

 

 

 

 

 

9

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

Итерации метода Гаусса-Зейделя сходятся с любого начального приближения, если матрица А имеет строгое диагональное преобладание или является неприводимой с диагональным преобладанием, или же является М-матрицей.

Метод последовательной верхней релаксации SOR является мо-

дификацией метода Гаусса-Зейделя. Его итерации строятся по схеме

 

 

1

 

 

 

 

 

 

 

uik 1

uik

 

aij ukj 1

aij ukj

bi

 

uik , i 1,..., n,

k 0,1,... .

 

 

a

 

 

 

 

 

 

 

 

 

j i

j i

 

 

 

 

 

ii

 

 

 

Здесь – параметр релаксации. При 1 мы приходим к методу Га- усса-Зейделя.

Условие сходимости метода SOR даются теоремой ОстровскогоРайха: если А – симметричная положительно определенная матрица и(0,2), то итерации метода SOR сходятся с любого начального приближения.

3.Краткое описание используемых программных продуктов и вычислительной техники

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

При проведении лабораторных работ в дисплейных классах кафедры ВВТиС (ауд. 1-403 и 1-407) может задействоваться следующая вычислительная техника:

12 рабочих станций Fujitsu Siemens Celsius M450, построенных на базе двухядерных процессоров Intel Core2Duo, ОЗУ 4 Гб;

12 двухпроцессорных рабочих станций Fujitsu Siemens Celsius R540 на базе двухядерных процессоров Intel Xeon 5130 (всего четыре ядра на общей памяти), ОЗУ 8 Гб;

рабочая станция Fujitsu Siemens Celsius W360 на базе четырехядерного процессора Inlel Quadro, ОЗУ 4 Гб;

10

узел кластерной системы УГАТУ: два четырехядерных процессора Intel Xeon 5300 2.33 ГГц, ОЗУ 8 Гб.

Для выполнения заданий лабораторной работы необходимо использовать компилятор языка С++ корпорации Intel: Intel C++ Compiler v. 10.1 или выше. Данный компилятор поддерживает возможность автоматического распараллеливания программ, а также в полном объеме включает возможность компиляции и сборки многопоточных программ, написанных с использованием интерфейса OpenMP. Предполагается использование данного компилятора под операционной системой семейства Windows.

4. Руководство по использованию программных продуктов

4.1. Автоматическое распараллеливание

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

При автоматическом распараллеливании компилятор выполняет следующую последовательность шагов.

1)Проводится анализ потоков данных программы.

2)Выполняется классификация циклов: на основе анализа корректности и эффективности определяются циклы – кандидаты на распараллеливание.

3)Для каждого выбранного цикла проводится анализ зависимости данных в цикле и строится соответствующий граф зависимостей.

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

5)Производится разделение данных по потокам: на основании выявленных ранее зависимостей все данные разделяются на классы SHARED (общие для всех потоков), PRIVATE (локальные данные потока) и FIRSTPRIVATE (локальные данные с сохранением начального значения).

6)Производится генерация многопоточного кода.

11

Для выполнения автоматического распараллеливания необходимо выполнить команду

icl /c /Qparallel prog.cpp

где prog.cpp – имя файла, содержащего исходный текст распараллеливаемой программы. Если программу необходимо не только откомпилировать, но и выполнить ее компоновку (линковку), ключ /c нужно опустить.

Управлять параметрами автоматического распараллеливания можно посредством трех переменных окружения OpenMP:

OMP_NUM_THREADS – задает количество потоков;

OMP_SCHEDULE – задает правило распределения итераций

цикла по потокам;ОMP_STACKSIZE – задает размер стека.

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

/Qpar-report[n]

Здесь параметр n определяет степень подробности выводимой диагностической информации:

0 – диагностическая информация не выводится;

1 – выводится информация об успешно распараллеленных циклах (это значение выставлено по умолчанию);

2 – выводится информация обо всех циклах, как распараллеленных, так и нет;

3 – дополнительно к информации со значением n=2 выводятся причины, по которым определенные циклы не были распараллелены (выводится информация о выявленной или предполагаемой зависимости данных внутри цикла, которая препятствует его распараллеливанию).

4.2. Генерация многопоточного OpenMP-кода

Компилятор Intel C++ compiler v. 10.1 поддерживает спецификацию интерфейса OpenMP, удовлетворяющую стандарту версии 2.5. Описание директив и функций интерфейса и правила их использования для создания многопоточных приложений, подкрепленные соот-

12

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]