Организация параллельных потоков. Часть 2 | страница 15
Мы применили редукцию и попутно исключили ситуацию гонки.
Рис. 4.14. Параллельный запуск
Задание. Запустите параллельную программу с разным количеством потоков и изучите полученные результаты.
4.2.3. Порядок выполнения потоков
Следующий эксперимент — изучим порядок запуска и выполнения параллельных потоков.
Составим программу на основе предыдущих (рис. 4.15). Обратите внимание, что мы временно убрали редукцию из директивы parallel. Все потоки обращаются к одной и той же общей переменной S.
Программа печатает заголовок таблицы (строка 6).
Затем выводит номер потока и значение суммы (строка 10).
Так мы сможем проследить, в каком порядке работает программа.
Рис. 4.15. Порядок потоков
Запускаем программу, получаем таблицу (рис. 4.16).
Как видим, номера потоков печаются в случайном порядке.
Рис. 4.16. Порядок потоков
Задание. Создайте программу (рис. 4.15) и запустите её. Обратите внимание на порядок выполнения потоков.
Перейдём в командное окно.
Запускаем нашу программу и направим вывод в файл — вместо вывода на экран:
omp-10-order> order. txt.
Эта манипуляция называется «перенаправление стандартного вывода». Экран — это стандартное устройство вывода, с которым работает функция printf. Вместо экрана, весь текстовый вывод отправляется в файл.
Итак, теперь вся таблица вместе с заголовком записана в текстовый файл. Открываем файл в Блокноте и убеждаемся в том, что вся информация здесь (рис. 4.17).
Рис. 4.17. Вывод в файл
Задание. Запустите программу и направьте вывод в файл. Откройте файл в Блокноте и изучите его содержимое.
Загрузим текстовый файл для анализа в электронную таблицу.
Запускаем Excel. Вызываем в верхнем меню открытие файла:
File — Open — Other locations — Browse.
Переходим в каталог Release и находим текстовый файл: order. txt.
Устанавливаем загрузку текстовых файлов:
Text Files (*prn, *.txt, *csv).
В правой части окна видим содержимое файла (рис. 4.18).
Нажимаем ОК.
Рис. 4.18. Загрузка файла
В окне Мастера импорта файла настраиваем параметры:
Original data type — Delimited;
My data has headers (рис. 4.19).
Нажимаем Next.
Рис. 4.19. Первый шаг импорта
На втором шаге импорта указываем разделитель полей — символ табуляции:
Delimiters — Tab.
Вспоминаем, что при выводе на экран мы использовали табуляцию.
Нажимаем Next (рис. 4.20).
Рис. 4.20. Второй шаг импорта
После импорта файла получаем таблицу в Excel (рис. 4.21).
Выделяем диапазон ячеек — заголовок и данные.
Выбираем в верхнем меню форматирование таблицы: