Читать «Организация параллельных потоков. Часть 2» онлайн - страница 6

Валентин Юльевич Арьков

В нижней части окна нам сообщают, что поддерживается версия 2.0:

OpenMP Support — Enable OpenMP 2.0 language extensions.

Здесь же показана опция командной строки, которая используется при вызове компилятора:

/openmp.

Нажимаем клавиши:

Apply — OK.

Рис. 3.8. Настройка свойств проекта

Задание. Включите поддержку OpenMP.

В окне редактирования программы сразу видно, что у нас включена поддержка OpenMP (рис. 3.9). Наводим курсор на идентификатор _OPENMP и видим, что он был определён.

Где-то ещё имеется следующая строчка:

#define _OPENMP 200203.

Это означает, что перед компиляцией программы все ссылки на данный идентификатор заменяются на 200203.

Кроме того, теперь у нас подсвечивается ветка, которая фактически будет вставлена в текст программы.

Рис. 3.9. Окно редактора с поддержкой OpenMP

Задание. Изучите изменения в окне редактора.

Запускаем программу.

На экран выводится то самое загадочное число 200203 (рис. 3.10). Возможно, у вас будет что-то другое.

Рис. 3.10. Сообщение о поддерже OpenMP

Задание. Запустите программу на выполнение.

Полученное число сообщает нам год и месяц выпуска очередной версии спецификации.

Чтобы понять смысл сообщения, вернемся к списку версий:

Находим дату: март 2002 года (рис. 3.11).

Читаем, какая версия была выпущена тогда.

Для первого знакомства с технологией и для наших простых экспериментов этого более чем достаточно. Мы не используем сложные и продвинутые инструменты.

Рис. 3.11. Версии спецификаций

Задание. Найдите версию спецификации для языка Си по дате выпуска.

3.3. Первая параллельная программа

Компилятор работает и поддерживает распараллеливание.

Составим самую первую параллельную программу.

Добавляем одну строчку (рис. 3.12):

#pragma omp parallel.

Мы объявляем часть программы, которая будет одновременно выполняться несколькими потоками.

Рис. 3.12. Параллельная программа

Запускаем программу и… ничего не изменилось (рис. 3.13).

Это всё ещё последовательная программа «Всем привет!»

Рис. 3.13. Последовательная программа

Задание. Создайте и запустите программу (рис. 3.12).

Настроим поддержку OpenMP для текущего проекта.

Эту настройку придётся делать для каждого нашего проекта.

Запускаем программу и получаем восемь одинаковых сообщений (рис. 3.14).

Рис. 3.14. Параллельное выполнение программы

Задание. Настройте проект и запустите параллельную программу.

Почему именно восемь?

Запустим Диспетчер задач — Task Manager (рис. 3.15). Для этого одновременно нажимаем три «волшебных» клавиши:

Ctrl + Alt + Del.

Кстати, как правильно произносится английское слово CONTROL? Большинство опрошенных студентов говорят с ударением на первом слоге. Потому что в английском обычно «ударяют» на первый слог. Но это правило работает не всегда. Особенно для тех слов, которые пришли из французского.

Задание. Выясните, как правильно произносится слово CONTROL.

Итак, мы запустили Диспетчер задач:

Task Manager.

Переходим на вкладку Быстродействие:

Performance.

Перед нами появляется некоторое количество окошек с графиками — по числу логических процессоров.