Читать «Организация параллельных потоков. Часть 2» онлайн - страница 8
Валентин Юльевич Арьков
Зато есть другой интересный параметр:
NUMBER_OF_PROCESSORS=8.
Как мы уже говорили, речь здесь идёт о так называемых «виртуальных процессорах», а вовсе не о микросхемах под названием «процессор».
Рис. 3.19. Параметры окружения
Задание. Просмотрите список параметров окружения и обратите внимание на количество процессоров.
Если наш параметр не задан, по умолчанию создаётся количество параллельных потоков, равное числу виртуальных процессоров.
Зададим создание трёх потоков:
set OMP_NUM_THREADS=3
Проверим, что появилось в нашем списке.
Вводим команду
SET
У нас появился наш параметр (рис. 3.20).
Рис. 3.20. Параметры окружения
Задание. Установите число потоков в командном окне.
Есть одна особенность работы с параметрами окружения в командной строке. Любые изменения параметров в командной строке действуют только в одном окне и только до тех пор, пока его не закроют. Постоянное и всеобщее задание параметров окружения делается по-другому. Мы этим заниматься не будем.
Задание. Откройте новое командное окно. Изучите список параметров окружения.
Нам нужно перейти в каталог, где находится скомпилированная программа — исполняемый файл.
Для этого придётся выяснить путь к файлу.
Возвращаемся в среду разработки.
Внизу экрана находим окно Output (рис. 3.21).
Здесь выводятся сообщения о результатах компиляции.
В нашем примере нам сообщают, что исполняемый файл успешно создан:
Build: 1 succeeded.
Нас интересует полный путь к файлу.:
E:\Arkov-OMP\omp-03-fork-join\Release\omp-03-fork-join. exe.
Путь можно скопировать в буфер, чтобы не печатать вручную.
Рис. 3.21. Окно сообщений компилятора
Задание. Ознакомьтесь с окномсообщений о результатах компиляции программы.
Переходим в командное окно.
Мы находимся на диске C:, а исполняемый файл — на диске E:.
Для перехода на другой диск вводим его имя и двоеточие.
Обращаем внимание, как изменилось приглашение к вводу команд.
Теперь здесь имя другого диска (рис. 3.22).
Рис. 3.22. Смена текущего диска
Задание. Смените текущий диск.
Сменим текущий каталог.
Вводим команду Change Directory:
CD
и путь к файлу.
Проверяем содержимое каталога Directory:
DIR
Убеждаемся, что исполняемый файл находится в текущем каталоге.
Запускаем программу на выполнение.
Вводим имя файла и нажимаем ОК.
Расширение EXE вводить не обязательно.
Видим, что параллельная область выполнялась на трёх потоках (рис. 3.23).
Рис. 3.23. Запуск программы
Задание. Запустите программу в командной строке и убедитесь, что вам удалось задать число потоков.
3.5.2. Библиотечная функция
Второй способ задать число параллельных потоков — это библиотечная функция. Конечно, речь здесь идёт о библиотеке OpenMP.
Формат вызова:
void omp_set_num_threads (int num).
Тип возвращаемого значения: void. Эта функция ничего не возвращает. Она просто делает своё дело.
Название функции можно расшифровать так:
Set Number of Threads — задать число параллельных потоков.
Чтобы использовать библиотечную функцию, нужно подключить эту библиотеку (рис. 3.24).
В начале программы указываем заголовочный файл: