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

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

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

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

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

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

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

В простейшем случае процесс состоит из одной нити. Нити иногда называют также потоками, легковеснымипроцессами, LWP (light-weight processes).Важным достоинством технологии OpenMP является возможность реализации так называемого инкрементального программирования, когда программист постепенно находит участки в программе, содержащие ресурс параллелизма, с помощью предоставляемых механизмов делает их параллельными, азатем переходит к анализу следующих участков. Таким образом, в программенераспараллеленная часть постепенно становится всё меньше.

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

Ломоносована суперкомпьютере СКИФ МГУ «ЧЕБЫШЁВ» [9] с использованием компиляторов Intel Fortran/C++ 11.0.Дополнительную информацию об интерфейсе OpenMP можно найти на тематической странице Информационно-аналитического центра по параллельнымвычислениям в сети Интернет Parallel.ru [4].7Основные понятияКомпиляция программыДля использования механизмов OpenMP нужно скомпилировать программукомпилятором, поддерживающим OpenMP, с указанием соответствующегоключа (например, в icc/ifort используется ключ компилятора –openmp, в gcc/gfortran –fopenmp, Sun Studio -xopenmp, в Visual C++ - /openmp, в PGI -mp).Компилятор интерпретирует директивы OpenMP и создаёт параллельныйкод.

При использовании компиляторов, не поддерживающих OpenMP, директивы OpenMP игнорируются без дополнительных сообщений.Компилятор с поддержкой OpenMP определяет макрос _OPENMP, которыйможет использоваться для условной компиляции отдельных блоков, характерных для параллельной версии программы. Этот макрос определён в формате yyyymm, где yyyy и mm – цифры года и месяца, когда был принят поддерживаемый стандарт OpenMP.

Например, компилятор, поддерживающийстандарт OpenMP 3.0, определяет _OPENMP в 200805.Для проверки того, что компилятор поддерживает какую-либо версиюOpenMP, достаточно написать директивы условной компиляции #ifdef или#ifndef. Простейшие примеры условной компиляции в программах на языках Си и Фортран приведены в примере 1.#include <stdio.h>int main(){#ifdef _OPENMPprintf("OpenMP is supported!\n");#endif}Пример 1a. Условная компиляция на языке Си.program example1b#ifdef _OPENMPprint *, "OpenMP is supported!"#endifendПример 1b.

Условная компиляция на языке Фортран.Для условной компиляции программ на Фортране строки могут также начинаться с пары символов !$, C$ или *$. В этом случае компилятор, поддерживающий OpenMP, заменит пару этих символов на два пробела, таким образом«раскомментировав» их. Пример 1с показывает использование такого варианта условной компиляции.8!$program example1cprint *, "OpenMP is supported!"endПример 1c. Условная компиляция на языке Фортран.Модель параллельной программыРаспараллеливание в OpenMP выполняется явно при помощи вставки в текстпрограммы специальных директив, а также вызова вспомогательных функций. При использовании OpenMP предполагается SPMD-модель (Single Program Multiple Data) параллельного программирования, в рамках которой длявсех параллельных нитей используется один и тот же код.Программа начинается с последовательной области – сначала работает одинпроцесс (нить), при входе в параллельную область порождается ещё некоторое число процессов, между которыми в дальнейшем распределяются частикода.

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

Само наличие данных, общих для нескольких нитей, приводит к конфликтам при одновременном несогласованном доступе.Поэтому значительная часть функциональности OpenMP предназначена дляосуществления различного рода синхронизаций работающих нитей.OpenMP не выполняет синхронизацию доступа различных нитей к одним итем же файлам. Если это необходимо для корректности программы, пользователь должен явно использовать директивы синхронизации или соответствующие библиотечные функции. При доступе каждой нити к своему файлуникакая синхронизация не требуется.9Директивы и функцииЗначительная часть функциональности OpenMP реализуется при помощи директив компилятору. Они должны быть явно вставлены пользователем, чтопозволит выполнять программу в параллельном режиме. Директивы OpenMPв программах на языке Фортран оформляются комментариями и начинаютсяс комбинации символов !$OMP, C$OMP или *$OMP, а в языке Си — указаниямипрепроцессору, начинающимися с #pragma omp.

Ключевое слово omp используется для того, чтобы исключить случайные совпадения имён директивOpenMP с другими именами.Формат директивы на Си/Си++:#pragma omp directive-name [опция[[,] опция]...]Формат директивы на Фортране:!$OMP directive-name [опция[[,] опция]...]С$OMP directive-name [опция[[,] опция]...]*$OMP directive-name [опция[[,] опция]...]Объектом действия большинства директив является один оператор или блок,перед которым расположена директива в исходном тексте программы. ВOpenMP такие операторы или блоки называются ассоциированными с директивой. Ассоциированный блок должен иметь одну точку входа в начале и одну точку выхода в конце. Порядок опций в описании директивы несущественен, в одной директиве большинство опций может встречаться несколькораз.

После некоторых опций может следовать список переменных (для Фортрана также и имён COMMON-блоков, заключённых в слеши), разделяемыхзапятыми.Все директивы OpenMP можно разделить на 3 категории: определение параллельной области, распределение работы, синхронизация. Каждая директива может иметь несколько дополнительных атрибутов – опций (clause). Отдельно специфицируются опции для назначения классов переменных,которые могут быть атрибутами различных директив.Чтобы задействовать функции библиотеки OpenMP периода выполнения (исполняющей среды), в программу нужно включить заголовочный файл omp.h(для программ на языке Фортран – файл omp_lib.h или модуль omp_lib).Если вы используете в приложении только OpenMP-директивы, включатьэтот файл не требуется.

Функции назначения параметров имеют приоритетнад соответствующими переменными окружения.10Все функции, используемые в OpenMP, начинаются с префикса omp_. Еслипользователь не будет использовать в программе имён, начинающихся с такого префикса, то конфликтов с объектами OpenMP заведомо не будет. Вязыке Си, кроме того, является существенным регистр символов в названияхфункций. Названия функций OpenMP записываются строчными буквами.Для того чтобы программа, использующая функции OpenMP, могла оставаться корректной для обычного компилятора, можно прилинковать специальную библиотеку, которая определит для каждой функции соответствующую «заглушку» (stub).

Например, в компиляторе Intel соответствующаябиблиотека подключается заданием ключа –openmp-stubs.Выполнение программыПосле получения выполняемого файла необходимо запустить его на требуемом количестве процессоров. Для этого обычно нужно задать количество нитей, выполняющих параллельные области программы, определив значениепеременной среды OMP_NUM_THREADS. Например, в Linux в командной оболочке bash это можно сделать при помощи следующей команды:export OMP_NUM_THREADS=nПосле запуска начинает работать одна нить, а внутри параллельных областейодна и та же программа будет выполняться всем набором нитей. Стандартный вывод программы в зависимости от системы будет выдаваться на терминал или записываться в файл с предопределенным именем.Замер времениВ OpenMP предусмотрены функции для работы с системным таймером.Функция omp_get_wtime() возвращает в вызвавшей нити астрономическоевремя в секундах (вещественное число двойной точности), прошедшее с некоторого момента в прошлом.Си:double omp_get_wtime(void);Фортран:double precision function omp_get_wtime()Если некоторый участок программы окружить вызовами данной функции, торазность возвращаемых значений покажет время работы данного участка.Гарантируется, что момент времени, используемый в качестве точки отсчета,11не будет изменён за время существования процесса.

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