1 ПРАКТИЧЕСКАЯ РАБОТА 1 1.1 Создание проекта в среде MS Visual Studio с поддержкой OpenMP Рисунок 1 – Код программы и включение поддержки Open MP 1.2 Ответы на вопросы 1) Что такое OpenMP? OpenMP (Open Multi-Processing) — открытый стандарт для распараллеливания программ. Дает описание совокупности директив компилятора, библиотечных процедур и переменных окружения, которые предназначены для программирования многопоточных приложений на многопроцессорных системах с общей памятью (SMP-системах). 2) Какие модели он реализует? Опишите модели и их связь. В OpenMP используется модель параллельного выполнения «ветвлениеслияние» (fork-join). Программа OpenMP начинается как единственный поток выполнения, называемый начальным потоком. Когда поток встречает параллельную конструкцию, он создает новую группу потоков, состоящую из себя и некоторого числа дополнительных потоков, и становится главным в новой группе. Все члены новой группы (включая главный) выполняют код внутри параллельной конструкции. В конце параллельной конструкции имеется неявный барьер. После параллельной конструкции выполнение пользовательского кода продолжает только главный поток. В параллельный регион могут быть вложены другие параллельные регионы, в которых каждый поток первоначального региона становится основным для своей группы потоков. Вложенные регионы могут в свою очередь включать регионы более глубокого уровня вложенности. 3) В каких языках реализован этот стандарт? Стандарт OpenMP разработан для языков Фортран, С и С++. 3) Из каких частей состоит реализация в Visual Studio? Visual C++ реализация стандарта OpenMP включает следующие конструкции: 1. Директивы Visual C++ поддерживает следующие директивы OpenMP. Для параллельного совместного использования рабочих операций: Для основного потока и синхронизации: 2 Для среды данных: 2. Предложения Visual C++ поддерживает следующие предложения OpenMP. Для общих атрибутов: 3 Для атрибутов общего доступа к данным: 3. Функции Visual C++ реализация стандарта OpenMP включает следующие функции и типы данных. Для выполнения среды: 4 Для блокировки: 5 Для подпрограмм времени: 4. Переменные среды 6 Реализация Стандарта OpenMP visual C++ включает следующие переменные среды. Эти переменные среды считываются при запуске программы и изменения их значений игнорируются во время выполнения (например, с помощью _putenv, _wputenv). Visual C++ функции библиотеки времени выполнения OpenMP содержатся в следующих библиотеках. Если _DEBUG определяется при компиляции и #include <omp.h> находится в исходном коде, вкомпд. LIB будет lib по умолчанию, в противном случае — ВКОМП. Будет использоваться LIB. Библиотеки DLL OpenMP находятся в каталоге распространяемого Visual C++ и должны распространяться с приложениями, использующими OpenMP. 7