Оглавление
Введение. 3
1 Директивы OpenMP. 3
1.1 Общие положения. 3
1.2 Директивы для определения параллельного области. 4
1.3 Директивы для распределения вычислений внутри параллельной области. 5
1.4 Классы переменных. 6
2 Переменные окружения. 6
3 Функции библиотеки runtime. 7
4 Компиляция OpenMP программ.. 7
5 Задания к лабораторным работам. 8
5.1 Замечания к выполнению лабораторных работ. 8
5.2 Лабораторная работа №1. Распараллеливание операций над векторами с помощью OpenMP. 8
5.2.1 Цель работы.. 8
5.2.2 Содержание отчета. 8
5.2.3 Варианты заданий. 8
5.3 Лабораторная работа №1. Распараллеливание вычислений с помощью OpenMP. 9
5.3.1 Цель работы.. 9
5.3.2 Содержание отчета. 9
5.3.3 Варианты заданий. 9
Библиографический список. 11
Русскоязычные источники: 11
Англоязычные источники: 11
Приложение A. Справочная информация. 12
Введение
Интерфейс OpenMP предназначен для программирования параллельных вычислений на традиционных алгоритмических языках (C/C++, Fortran), выполняемых на системах с общим пространством памяти (SMP). Его основную часть составляют набор директив, библиотечных функций и переменных окружения. В OpenMP заложена идея “инкрементального распараллеливания”, когда разработчик не создает новую программу, просто добавляет в текст последовательной программы OpenMP-директивы. При этом система программирования OpenMP предоставляет разработчику большие возможности по контролю над поведением параллельного приложения.
Вся программа разбивается на последовательные и параллельные области. Все последовательные области выполняет главная нить (master thread), порождаемая при запуске программы, а при входе в параллельную область главная нить порождает дополнительные нити. После выхода из параллельной области происходит синхронизация и все нити, кроме главной нити, уничтожаются. После этого продолжается последовательное выполнение кода до очередной параллельной области и т.д. Предполагается, что OpenMP-программа без какой-либо модификации должна работать как на многопроцессорных системах, так и на однопроцессорных. В последнем случае директивы OpenMP просто игнорируются. Следует отметить, что наличие общей памяти не препятствует использованию технологий программирования, разработанных для систем с распределенной памятью.
Первая версия стандарта OpenMP для языков C/C++ появилась в октябре 1998 г., а вторая, и, пока, последняя – в марте 2002. Eе полное описание можно найти на сайте www.openmp.org. В связи с выпуском микропроцессора Pentium 4 HT, поддерживающего технологию Hyper Threading, корпорация Intel разработала реализацию стандарта OpenMP для компиляторов Intel C++. Она позволяет программировать параллельные