Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Технологии паралельного программирования






3.1 Описание технологии OpenMP

Технология OpenMP (Open Multi-Processing) это наиболее популярная и используемая сегодня технология распараллеливания. За основу берётся последовательная программа, а для его распараллеливания используется набор директив компилятора, переменные окружения и библиотечные процедуры, которые предназначены для программирования многопоточных приложений на многопроцессорных системах с общей памятью (SMP-системах) (рисунок 3.1).

 
 

 


Рисунок 3.1. SMP система

 

· Все процессоры имеют доступ к любой точке памяти с одинаковой скоростью.

· Процессоры подключены к памяти либо с помощью общей шины, либо с помощью crossbar-коммутатора.

· Аппаратно поддерживается когерентность кэшей.

Стандарт Open MP был основан на языке Fortran в 1997 г., но позднее в 1998 г. включил в себя и языки C/C++. На данный момент уже доступна версия 4.0, но во время выполнения курсовой работы использовалась версия 2.0, так как новый стандарт на данный момент поддерживается только компилятором Intel. Разработкой OpenMP занимается ARB(Architecture Review Board), это некоммерческая организация, в ёё состав входят крупнейшие разработчики SMP-архитектур и ПО.

Программа, созданная с применением технологии OpenMP, состоит из последовательных (однопоточных) и параллельных (многопоточных) участков. В OpenMP используется модель распараллеливания «Ветвление - Слияние» (рисунок 3.2). Вначале иметься только единственный поток его называют начальным потоком или ещё основной нитью(Master thread, здесь threard это легковесные процессы). Как только поток встречает параллельную конструкцию в коде программы, он создает группу потоков и становится главным потоком. В созданной группе все потоки, включая главный, выполняют код программы. После выполнения параллельной конструкции в коде, работу продолжает только главный поток.

 

Рисунок 3.2. Модель распараллеливания «Ветвление - Слияние».

 

Число потоков выполняющие параллельную часть можно контролировать по разному, можно использовать OMP_NUM_THREADS или вызвать процедуру omp_set_num_threads()

Память в OpenMP разделяется на: локальную и общую память. Локальная память доступна только для одной нити, а общая, для нескольких.

Опишем основные возможности и положительные качества технологии распараллеливания OpenMP:

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

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

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

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

Инструментарий

Рассмотрим инструмент, который понадобиться нам для работы. А потребуется нам Visual Studio, в курсовой работе использовалось VS Express 2013.

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

Всё это означает, что для распараллелирования последовательной программы на языке C/С++ нам достаточно включить в проект поддержку пакета OpenMP.

В Visual Studio после создания проекта, нужно во вкладке «Отладка» зайти в «Свойства проекта». Далее выбираем C/C++/ Язык. Выставляем в графе «Конфигурация» - «Активная (debug)», а в «Платформа» - «Активная(Win32)» как показано на рисунке 3.3.

 

Рисунок 3.3. Выбор конфигураций и платформ, для которых мы устанавливаем параметры.

 

Поддержка OpenMP включается, как показано на рисунке 3.4.

 

Рисунок 3.4. Поддержка OpenMP включена.

 

Возможностей Visual Studio Express 2013 хватает для того, чтобы мы могли разрабатывать параллельные программы с применением технологии OpenMP. Однако для полноценной работы следует иметь Intel® Parallel Studio. Его будем использовать для поиска параллельных ошибок в создаваемом коде. Данный дистрибутив можно скачать с официального сайта.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.