Организация параллельных потоков. Часть 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).

Выделяем диапазон ячеек — заголовок и данные.

Выбираем в верхнем меню форматирование таблицы: