Организация параллельных потоков. Часть 2 | страница 19
Время в компьютере измеряют с помощью системного таймера. Для обращения к таймеру есть ряд готовых функций.
В предыдущей работе мы использовали стандартную функцию clock ().
Чтобы получить время в секундах делим разность показаний на количество тиков CLOCKS_PER_SEC.
В библиотеке OpenMP есть своя функция для работы с таймером:
double omp_get_wtime (void).
Точность измерения времени можно узнать с помощью функции:
double omp_get_wtick (void).
Обе функции дают результат в секундах.
Возьмём предыдущую программу с «большой задачей» суммирования. Добавим замеры времени и выведем результаты на экран (рис. 4.31).
Рис. 4.31. Замеры времени
Запускаем программу и подбираем число итераций цикла так, чтобы работа продолжалась примерно секунд 20.
Нас интересует, насколько существенной будет «разница в показаниях». В нашем примере разница в третьем-четвёртом знаке после запятой, или в пятом значащем разряде (рис. 4.32).
Рис. 4.32. Две оценки времени
Зададим побольше итераций. Разница по-прежнему в третьем-четвёртом знаке после запятой (рис. 4.33). И это приемлемая разница — если принять во внимание, что заявленная точность библиотечной функции clock () составляет 0,001 сек.
В следующих упражнениях мы примем дополнительные меры для повышения точности измерения времени.
Рис. 4.33. Ещё две оценки
Задание. Составьте и запустите программу (рис. 4.31). Сравните значения продолжительности вычислений, полученные двумя способами.
5. Параметры командной строки
Для организации экспериментов нам понадобится много раз запускать одну и ту же программу с разными настройками и параметрами. Конечно, можно каждый раз изменять исходный текст, компилировать исполняемый файл и вручную запускать его на выполнение. Но это дополнительные затраты времени. Мы поступим по-другому.
В нашем распоряжении есть такой инструмент, как параметры (аргументы) командной строки. Мы его уже использовали в предыдущей работе. Напомним, что это такое и как это работает.
В командной строке мы запускаем программу на выполнение. Мы пишем название файла. Расширение имени файла можно не указывать. После имени файла через пробел можно указать дополнительные параметры. Это просто символы, строки текста, разделённые пробелами. Программа может прочитать их — точно так же, как мы вводим данные с клавиатуры. Этот приём часто используется при вызове команд операционной системы.
Задание. Изучите в Википедии статью «Интерфейс командной строки». Обратите внимание на раздел «Формат команды» и выясните, что означают квадратные скобки в описании команд операционной системы. Обратите внимание на раздел «Достоинства» и выясните, какое преимущество командной строки мы используем для организации наших вычислительных экспериментов.