Валентин Юльевич Арьков - Организация параллельных потоков. Часть 2 стр 10.

Шрифт
Фон

В предыдущей работе мы использовали стандартную функцию 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. Параметры командной строки

Для организации экспериментов нам понадобится много раз запускать одну и ту же программу с разными настройками и параметрами. Конечно, можно каждый раз изменять исходный текст, компилировать исполняемый файл и вручную запускать его на выполнение. Но это дополнительные затраты времени. Мы поступим по-другому.

В нашем распоряжении есть такой инструмент, как параметры (аргументы) командной строки. Мы его уже использовали в предыдущей работе. Напомним, что это такое и как это работает.

В командной строке мы запускаем программу на выполнение. Мы пишем название файла. Расширение имени файла можно не указывать. После имени файла через пробел можно указать дополнительные параметры. Это просто символы, строки текста, разделённые пробелами. Программа может прочитать их  точно так же, как мы вводим данные с клавиатуры. Этот приём часто используется при вызове команд операционной системы.

Задание. Изучите в Википедии статью «Интерфейс командной строки». Обратите внимание на раздел «Формат команды» и выясните, что означают квадратные скобки в описании команд операционной системы. Обратите внимание на раздел «Достоинства» и выясните, какое преимущество командной строки мы используем для организации наших вычислительных экспериментов.

5.1. Команда DIR

Рассмотрим для примера работу с командой DIR. Эта команда выводит на экран содержимое директории, то есть список файлов в текущем каталоге. Название команды  это сокращение английского слова DIRECTORY.

Задание. Прочитайте в английской версии Википедии начало статьи «Directory (computing)» и выясните, что такое «директория». Переключитесь на русский вариант статьи и выясните, какими словами может называться этот объект.


Познакомимся с командой DIR. Переходим в командное окно и вводим нашу команду. Сейчас мы вводим саму команду без параметров (рис. 5.1). Получаем сведения про текущий диск, папку и файлы.


Рис. 5.1. Команда DIR без параметров


Чтобы узнать подробности о нашей команде, вызываем её с параметром /? (рис. 5.2). То, что вводят после имени команды, называют разными словами: параметры, ключи, опции и т. п.

Нам сообщают, что делает наша команда, какой у неё формат вызова и что делают разные ключи. Видим, что параметры нужно вводить через пробел после команды.


Рис. 5.2. Справка по использованию команды


Задание. Вызовите справку и выясните, что делают параметры /B, /O и /X. Вызовите команду DIR по очереди с каждым из этих ключей.

КОНЕЦ ОЗНАКОМИТЕЛЬНОГО ОТРЫВКА

5.2. Чтение параметров

При запуске программы на выполнение можно получить параметры командной строки (command-line arguments). Для этого в начале программы в заголовке главной функции main указывают аргументы argc и argv:

int main (int argc, char* argv []).

argc  сокращение от выражения arguments count (the count of arguments). Это количество параметров командной строки. Если argc равен 1, значит при вызове вводили только имя исполняемого файла.

argv  сокращение от arguments values (the values of the arguments). Это массив указателей на строки символов. Каждый аргумент командной строки  это строка, состоящая из одного или нескольких символов. Квадратные скобки после argv говорят о том, что это массив. Звёздочка  что это указатель. Таким образом, argv указывает на первый элемент массива. А размер этого массива мы узнаём из предыдущего параметра argc.

Напомним, что нумерация элементов массива в языке программирования Си начинается с нуля. Таким образом, argv [0]  это имя запущенной программы (файла типа EXE), argv [1]  это первый аргумент (параметр) после имени файла и т. д.

Составим программу, которая читает параметры командной строки и выводит их на экран (рис. 5.3).

Вначале мы выводим на экран количество аргументов (строка 5). Это значение переменной argc.

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке

Скачать книгу

Если нет возможности читать онлайн, скачайте книгу файлом для электронной книжки и читайте офлайн.

fb2.zip txt txt.zip rtf.zip a4.pdf a6.pdf mobi.prc epub ios.epub fb3