– Dependencies – зависимости по данным между параллельными потоками;
– Conflicts – конфликты доступа к данным;
– Deadlocks – тупиковые ситуации (взаимная блокировка);
– Race conditions – ситуация гонки за доступ к данным.
Как видим, все эти ситуации связаны с обращением к общим данным из нескольих параллельных потоков. В последовательных программах таким проблем просто не может возникнуть.
Ответственность за корректность составления программы лежит полностью на составителе программы. Все эти положения можно найти в тексте спецификации OpenMP.
Для реализации параллелизма в технологии OpenMP используют три вида инструментов:
– Directives – Директивы компилятора;
– Library functions – Готовые библиотечные функции;
– Environment variables – Переменные среды (параметры окружения).
2.5. Среда разработки
Всё программное обеспечение, используемое в данной работе, является бесплатным и доступно на официальных сайтах фирм-разработчиков. Программы устанавливают в операционной системе Microsoft Windows.
Интегрированная среда разработки Microsoft Visual Studio Community Editionпредоставляется бесплатно для студентов, индивидуально работающих программистов и разработчиков программного обеспечения с открытым исходным кодом Open Source.
В данной работе мы будем использовать Visual Studio. Не потому, что это самый лучший компилятор. И не потому, что мы хотели бы заработать на рекламе конкретного программного продукта. Просто под руку попалось. Работает для наших задач – и на том спасибо.
Желающие могут работать в любой другой операционной системе и использовать любой другой компилятор языка программирования Си. Всё, что требуется – это поддержка технологии распараллеливания OpenMP.
Устанавливаем Visual Studio.
Переходим на сайт:
https://visualstudio.microsoft.com/.
Выбираем версию Community Edition(рис. 2.2). Она бесплатна для учебных и некоммерческих целей.
Рис. 2.2. Выбор версии среды разработки
Раньше, в далёком прошлом (несколько лет тому назад) программы были небольшие, и разработчики предлагали скачать образ диска в формате *.ISO. Его можно было даже на «болванку» записать. На записываемый DVD-Rили на многоразовый, перезаписываемый DVD-RW.
Сегодня выбора почти не осталось. Есть только web-установщик. Небольшая программа, которая скачает из интернета необходимые компоненты для выбранной конфигурации. Счёт может идти на десятки гигабайт, а то и поболее.
Нажимаем кнопку «Установить» и начинается скачивание установщика (рис. 2.3).
Рис. 2.3. Скачивание веб-установщика
Как видим, пока мы скачали чуть больше одного мегабайта.
Скачанную программу запускаем. Начинается процесс установки. В дополнение к стандартному набору средств разработки, который нам предлагают по умолчанию, мы выбираем компилятор языка Си. Остальные компоненты тоже можно установить, если будет такое желание ии необходимость. Веб-установщик скачает всё, что потребуется для завершения установки.
Задание. Установите среду разработки и компилятор языка Си.
3. Составление параллельных программ
В этом разделе мы составим несколько программ, постепенно усложняя алгоритмы.
Каждую программу мы исследуем и рассмотрим со всех сторон.
Попутно мы уточним и проясним разные моменты и особенности.
Убедимся, что среда разработки позволит нам сделать что-нибудь полезное. Мы начинаем работу с нуля. С самой простой программы «Всем привет!». Английское название: «Hello, World!»
Создаём новый проект. Пустой, незаполненный проект.
Добавляем новый элемент проекта – файл с исходным текстом программы (рис. 3.1).
Компилируем программу и запускаем её на выполнение.
Для каждой новой программы создаём новый каталог и новый файл с исходным текстом программы. Иначе потом следов не найдёшь. В руках останется последняя недоделанная программа, которая затёрла всю предыдущую работу.
Рис. 3.1. Программа «Всем привет»
Читать дальше