Организация параллельных потоков. Часть 2 | страница 10
Для перехода на другой диск вводим его имя и двоеточие.
Обращаем внимание, как изменилось приглашение к вводу команд.
Теперь здесь имя другого диска (рис. 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).
В начале программы указываем заголовочный файл:
#include
Рис. 3.24. Задание числа потоков
Задаём два параллельных потока.
Запускаем программу из среды разработки.
Видим, что в параллельной области сработало два потока (рис. 3.25).
Рис. 3.25. Два потока
Задание. Установите число потоков с помощью и библиотечной функции и убедитесь, что эта настройка сработала.
3.5.3. Параметр директивы
Третий способ задать число параллельных потоков — указать в параметрах директивы parallel:
num_threads (num).
Составляем новую программу на основе предыдущей.
Указываем число потоков — четыре (рис. 3.26):
num_threads (4).
Рис. 3.26. Число потоков в директиве
Запускаем программу.
Убеждаемся, что число параллельных потоков соответствует тому, что мы задали (рис. 3.27).
Рис. 3.27. Четыре потока
Задание. Установите число параллельных потоков через параметр директивы.
3.5.4. Приоритет настроек
Мы рассмотрели три способа задать число параллельных потоков.
Для одной программы можно использовать два или три способа одновременно.
При этом существует приоритет (относительная важность) настроек. Какая-то настройка важнее другой, и она отменяет менее важную настройку, заменяет своим параметром.
Задание. Проверьте все комбинации настроек и сделайте выводы о приоритете настроек.