Читать «Организация параллельных потоков. Часть 2» онлайн - страница 7
Валентин Юльевич Арьков
Если у нас всего один график, щёлкаем по нему правой кнопкой и выбираем в контекстном меню:
Change graph to — Logical processors.
Здесь нам намекают именно на «логические процессоры», а не на физические процессоры и не на ядра процессора. Для операционной системы и для параллельной программы эти различия и тонкости не слишком важны. В частности, на нашем компьютере один процессор, в котором имеются четыре ядра с «гипертредингом». HyperThreading — это технология компании Intel для выполнения двух потоков на одном физическом ядре. Итого имеем восемь виртуальных, логических процессоров.
Рис. 3.15. Диспетчер задач
Задание. Выясните количество виртуальных процессоров на своём компьютере.
3.4. Параллельные и последовательные области
Как мы уже говорили, здесь используется модель «fork-join».
Составим программу, в которой организуем три области:
1) первая последовательная область печатает единичку;
2) параллельная область печатает двоечку — несколько раз, по количестве виртуальных процессоров;
3) вторая последовательная область печатает троечку.
Текст программы приводится на рис. 3.16.
Рис. 3.16. Программа с тремя областями
Включаем в компиляторе поддержку OpenMP.
Компилируем.
Запускаем.
Рассматриваем результаты (рис. 3.17).
На экран выводится одна цифра 1, восемь цифр 2 и одна цифра 3.
Это говорит о том, что рспараллеливанию подвергается только часть программы. Та часть, которую мы указали в директиве parallel.
Рис. 3.17. Результаты работы параллельной программы
Задание. Запустите параллельную программу (рис. 3.16).
3.5. Число параллельных потоков
У нас имеется три способа задания числа параллельных потоков:
— параметр окружения OMP_NUM_THREADS;
— функция omp_set_num_threads;
— параметр директивы num_threads.
3.5.1. Переменная окружения
Начнём с задания часта потоков с помощью переменной окружения. Другие названия: параметр окружения, параметр среды, set-параметр.
Английское название:
Environment variable.
Это текстовая переменная операционной системы. Переменная находится в оперативной памяти. Её значение может прочитать любая программа в момент выполнения. К переменным окружения обращаются по имени (названию). Окружение, или среда, — это среда выполнения программ. Эту среду создаёт и обслуживает операционная система.
Мы будем работать с параметрами окружения через командное окно. Другие названия: командная строка, командный процессор, командная оболочка. Английские названия:
— Command Window
— Command Processor
— Command Shell.
Нажимаем комбинацию клавиш:
Win + R.
Вводим имя программы, которая обслуживаем командное окно:
CMD (рис. 3.18).
Рис. 3.18. Запуск командного окна
Задание. Запустите командное окно.
Вводим в командной строке команду просмотра параметров окружения:
SET
На экран выводится список параметров в алфавитном порядке.
Нас интересует переменная:
OMP_NUM_THREADS.
Название можно расшифровать так:
OpenMP Number of Threads — Число потоков параллельной области OpenMP.
С списке переменных такого параметра пока нет (рис. 3.19).