Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Параллельное программирование с использованием OpenMP. Антонов (2009)

Параллельное программирование с использованием OpenMP. Антонов (2009) (Параллельное программирование с использованием OpenMP. Антонов (2009).pdf), страница 11

PDF-файл Параллельное программирование с использованием OpenMP. Антонов (2009) (Параллельное программирование с использованием OpenMP. Антонов (2009).pdf), страница 11 Суперкомпьютерное моделирование и технологии (63866): Книга - 11 семестр (3 семестр магистратуры)Параллельное программирование с использованием OpenMP. Антонов (2009) (Параллельное программирование с использованием OpenMP. Антонов (2009).pdf) - PD2020-08-25СтудИзба

Описание файла

PDF-файл из архива "Параллельное программирование с использованием OpenMP. Антонов (2009).pdf", который расположен в категории "". Всё это находится в предмете "суперкомпьютерное моделирование и технологии" из 11 семестр (3 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 11 страницы из PDF

Значение переменной может задаваться в виде size |sizeB | sizeK | sizeM | sizeG, где size – положительное целое число, абуквы B, K, M, G задают соответственно, байты, килобайты, мегабайты и гигабайты. Если ни одной из этих букв не указано, размер задаётся в килобайтах.Если задан неправильный формат или невозможно выделить запрошенныйразмер стека, результат будет зависеть от реализации.Например, в Linux в командной оболочке bash задать размер стека можно припомощи следующей команды:export OMP_STACKSIZE=2000K69Переменная среды OMP_WAIT_POLICY задаёт поведение ждущих процессов.Если задано значение ACTIVE, то ждущему процессу будут выделяться циклыпроцессорного времени, а при значении PASSIVE ждущий процесс можетбыть отправлен в спящий режим, при этом процессор может быть назначендругим процессам.Переменная среды OMP_THREAD_LIMIT задаёт максимальное число нитей, допустимых в программе.

Если значение переменной не является положительным целым числом или превышает максимально допустимое в системе числопроцессов, поведение программы будет зависеть от реализации. Значение переменнойможетбытьполученоприпомощипроцедурыomp_get_thread_limit().Си:int omp_get_thread_limit(void);Фортран:integer function omp_get_thread_limit()70Использование OpenMPЕсли целевая вычислительная платформа является многопроцессорной и/илимногоядерной, то для повышения быстродействия программы нужно задействовать все доступные пользователю вычислительные ядра.

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

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

Различные способы распределенияитераций позволяют добиваться максимально равномерной загрузки нитей,между которыми распределяются итерации цикла.Статический способ распределения итераций позволяет уже в момент написания программы точно определить, какой нити достанутся какие итерации.Однако он не учитывает текущей загруженности процессоров, соотношениявремён выполнения различных итераций и некоторых других факторов. Этифакторы в той или иной степени учитываются динамическими способамираспределения итераций. Кроме того, возможно отложить решение по способу распределения итераций на время выполнения программы (например, выбирать его, исходя из текущей загруженности нитей) или возложить выборраспределения на компилятор и/или систему выполнения.Обмен данными в OpenMP происходит через общие переменные.

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

Нет необходимости сразу распараллеливать всю программу, её создание ведется последовательно, что упрощает и процесс программирования, и отладку.Программа, созданная с использованием технологии OpenMP, может бытьиспользована и в качестве последовательной программы. Таким образом, нетнеобходимости поддерживать последовательную и параллельную версии.Директивы OpenMP просто игнорируются последовательным компилятором,а для вызова функций OpenMP могут быть подставлены специальные «заглушки» (stubs), текст которых приведен в описании стандарта. Они гарантируют корректную работу программы в последовательном случае – нужнотолько перекомпилировать программу и подключить другую библиотеку.Одним из достоинств OpenMP его разработчики считают поддержку так называемых оторванных (orphaned) директив.

Это предполагает, что директивы синхронизации и распределения работы могут не входить непосредственно в лексический контекст параллельной области. Например, можновставлять директивы в вызываемую подпрограмму, предполагая, что её вызов произойдёт из параллельной области.OpenMP может использоваться совместно с другими технологиями параллельного программирования, например, с MPI. Обычно в этом случае MPIиспользуется для распределения работы между несколькими вычислительными узлами, а OpenMP затем используется для распараллеливания на одномузле.72Примеры программПример 30 реализует простейшую программу вычисления числа Пи.

Дляраспараллеливания достаточно добавить в последовательную программу всего две строчки.#include <stdio.h>double f(double y) {return(4.0/(1.0+y*y));}int main(){double w, x, sum, pi;int i;int n = 1000000;w = 1.0/n;sum = 0.0;#pragma omp parallel for private(x) shared(w)\reduction(+:sum)for(i=0; i < n; i++){x = w*(i-0.5);sum = sum + f(x);}pi = w*sum;printf("pi = %f\n", pi);}Пример 30a. Вычисление числа Пи на языке Си.program compute_piparameter (n = 1000000)integer idouble precision w, x, sum, pi, f, yf(y) = 4.d0/(1.d0+y*y)w = 1.0d0/nsum = 0.0d0;!$omp parallel do private(x) shared(w)!$omp& reduction(+:sum)do i=1,nx = w*(i-0.5d0)sum = sum + f(x)end dopi = w*sumprint *, 'pi = ', piendПример 30b. Вычисление числа Пи на языке Фортран.73Пример 31 реализует простейшую программу, реализующую перемножениедвух квадратных матриц. В программе замеряется время на основной вычислительный блок, не включающий начальную инициализацию.

В основномвычислительном блоке программы на языке Фортран изменён порядок циклов с параметрами i и j для лучшего соответствия правилам размещения элементов массивов.#include <stdio.h>#include <omp.h>#define N 4096double a[N][N], b[N][N], c[N][N];int main(){int i, j, k;double t1, t2;// инициализация матрицfor (i=0; i<N; i++)for (j=0; j<N; j++)a[i][j]=b[i][j]=i*j;t1=omp_get_wtime();// основной вычислительный блок#pragma omp parallel for shared(a, b, c) private(i, j, k)for(i=0; i<N; i++){for(j=0; j<N; j++){c[i][j] = 0.0;for(k=0; k<N; k++) c[i][j]+=a[i][k]*b[k][j];}}t2=omp_get_wtime();printf("Time=%lf\n", t2-t1);}Пример 31a.

Перемножение матриц на языке Си.74program matrmultinclude "omp_lib.h"integer Nparameter(N=4096)common /arr/ a, b, cdouble precision a(N, N), b(N, N), c(N, N)integer i, j, kdouble precision t1, t2C инициализация матрицdo i=1, Ndo j=1, Na(i, j)=i*jb(i, j)=i*jend doend dot1=omp_get_wtime()C основной вычислительный блок!$omp parallel do shared(a, b, c) private(i, j, k)do j=1, Ndo i=1, Nc(i, j) = 0.0do k=1, Nc(i, j)=c(i, j)+a(i, k)*b(k, j)end doend doend dot2=omp_get_wtime()print *, "Time=", t2-t1endПример 31b.

Перемножение матриц на языке Фортран.В таблице 2 приведены времена выполнения примера 31 на узле суперкомпьютера СКИФ МГУ «ЧЕБЫШЁВ» [9]. Использовался компилятор Intel 11.0без дополнительных опций оптимизации, кроме –openmp.Количество1248нитейСи165.442016114.41322768.27114939.039399Фортран164.433444115.10083567.95378039.606582Таблица 2. Времена выполнения произведения матриц на узлесуперкомпьютера СКИФ МГУ «ЧЕБЫШЁВ».75Литература1. OpenMP Architecture Review Board (http://www.openmp.org/).2. The Community of OpenMP Users, Researchers, Tool Developers and Providers (http://www.compunity.org/).3. OpenMP Application Program Interface Version 3.0 May 2008(http://www.openmp.org/mp-documents/spec30.pdf).4.

Что такое OpenMP? (http://parallel.ru/tech/tech_dev/openmp.html).5. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. СПб.:БХВ-Петербург, 2002. - 608 с.6. Barbara Chapman, Gabriele Jost, Ruud van der Pas. Using OpenMP: portable shared memory parallel programming (Scientific and EngineeringComputation). Cambridge, Massachusetts: The MIT Press., 2008. - 353 pp.7. Антонов А.С. Введение в параллельные вычисления. Методическоепособие.-М.: Изд-во Физического факультета МГУ, 2002. - 70 с.8. Антонов А.С. Параллельное программирование с использованием технологии MPI: Учебное пособие.

-М.: Изд-во МГУ, 2004. - 71 с.9. СуперкомпьютерныйкомплексМосковскогоуниверситета(http://parallel.ru/cluster/).76Учебное изданиеАнтонов Александр СергеевичПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕС ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИOpenMPПодписано в печать 18.03.2009. Формат 60х84/16.Бумага офсетная №1. Печать ризо. Усл. печ. л. 4,75.Уч.-изд. л. 5,0. Тираж 100 экз. Заказ № 1.Ордена «Знак Почета» издательство Московского университета.125009, Москва, ул.

Б. Никитская, 5/7.Участок оперативной печати НИВЦ МГУ.119992, ГСП-2, Москва, НИВЦ МГУ..

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5193
Авторов
на СтудИзбе
434
Средний доход
с одного платного файла
Обучение Подробнее