Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем»


Скачать 273.51 Kb.
Название Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем»
страница 1/3
Тип Методические указания
rykovodstvo.ru > Руководство эксплуатация > Методические указания
  1   2   3



НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСТЕТ
ФАКУЛЬТЕТ ПРИКЛАДНОЙ МАТЕМАТИКИ И ИНФОРМАТИКИ
КАФЕДРА ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛИТЕЛЬНЫХ ТЕХНОЛОГИЙ
“УТВЕРЖДАЮ”

Декан ФПМИ Б.Ю. Лемешко

“___ ”____________2011 г.

Методические указания

к расчетно-графическим заданиям по

учебной дисциплине

«Архитектура ЭВМ и вычислительных систем»
ООП: 010400.62 Прикладная математика и информатика

квалификация – бакалавр прикладной математики и информатики

Курс 1

Семестр 2

Лекции 36 часов

РГЗ

Самостоятельная работа 108 часов

Зачет 2 семестр

Всего 144 часа


Новосибирск

2011 г.

Цели освоения дисциплины «Архитектура ЭВМ и вычислительных систем »
Освоение бакалаврами дисциплины «Архитектура ЭВМ и вычислительных систем » преследует следующие цели:

  • систематизация теоретических знаний о системной организации современной ЭВМ;

  • изучение особенностей архитектур ЭВМ и их влияния на производительность на заданном классе задач;

  • формирование минимальных практических навыков оптимизации прикладных программ под заданную архитектуру ЭВМ (навыки учета особенностей архитектуры целевой ЭВМ в прикладной программе);


Целью РГЗ является закрепление и лучшее усвоение теоретического материала. Предлагаемые задания направлены на выявление архитектурных особенностей современных компьютеров и вычислительных систем программным путем и получение навыков использования этих особенностей в разработке прикладных программах.
Задание №1. Определение времени работы прикладных программ, исследование зависимости времени выполнения программ от уровня оптимизации компилятора.
Цели работы:

  1. Научиться измерять интервалы времени в программах на языке C.

  2. Исследовать зависимость времени работы прикладных программ от уровня оптимизации компилятора.


Методические указания:

Измерение времени работы прикладных программ или их частей является одним из основных способов контроля их быстродействия. Такой контроль полезен в определении «узких мест» в алгоритме или программе, которые нуждаются в оптимизации. С другой стороны, исследование быстродействия одной и той же программы на компьютерах различной архитектуры и конфигурации позволяет судить о том, каковы реальные характеристики этих компьютеров, или их подсистем.

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

В данной лабораторной работе необходимо реализовать простой прикладной алгоритм (один из предлагаемых вариантов), и измерить время его работы несколькими различными способами. Каждый прикладной алгоритм имеет параметр, который требуется задать таким образом, чтобы удовлетворить требованию точности измерения.

Основная задача компилятора – это преобразование (трансляция) программы с языка программирования высокого уровня в машинный код. Это преобразование не однозначное. Для одной и той же программы можно сгенерировать множество различных вариантов машинного кода, и все они будут верны, то есть соответствовать исходной программе. Тем не менее, их характеристики, такие как быстродействие, могут существенно различаться. Поэтому задачей компилятора является не только создание правильного машинного кода, но и такого, который бы был эффективным. В зависимости от того, в каком смысле понимается эффективность компиляторы могут стараться уменьшить время выполнения программы, её размер или оптимизировать другие характеристики. Такая компиляция называется оптимизирующей. В данной работе нас будут интересовать оптимизации, направленные на уменьшение времени работы программы.

Как правило, компиляторы имеют несколько режимов оптимизации, которые ещё называются уровнями оптимизации. На нулевом уровне компилятор не выполняет никаких оптимизаций, а команда за командой преобразует исходный текст в машинный код тривиальным способом. Этот режим компиляции используется, главным образом, при отладке, потому что такой машинный код близок исходной программе и потому более понятен. На первом уровне оптимизации компилятор применяет к программе различные преобразования (см. приложение 4), направленные на уменьшение времени её работы. Обычно это режим компиляции по умолчанию. На втором уровне компилятор к способам оптимизации первого уровня добавляет другие, более «агрессивные» способы. Они отличаются тем, что иногда могут наоборот, ухудшить качество программы. Эти оптимизации отделены, чтобы пользователь мог воспользоваться ими, но на свой страх и риск. Нумерация уровней может отличаться в различных компиляторах, но нулевой уровень традиционно соответствует отсутствию оптимизаций (не путать с уровнем оптимизации по умолчанию).

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

Кроме этих режимов оптимизирующей компиляции компиляторы часто обладают и другими, такими как сокращение времени компиляции. Режим компиляции обычно регулируется ключами компиляции (см. приложение 5). Какие режимы компиляции поддерживает конкретный компилятор можно узнать в документации к компилятору.
Форма отчета:

Результаты работы представляются в виде файла с отчётом о проделанной работе в произвольной форме. Отчёт должен содержать следующую информацию:

  • Исполнитель (ФИО, № группы)

  • Вариант задания

  • Таблица измерений, содержащая следующие поля:

  • Уровень оптимизации

  • Способ измерения времени

  • Величина параметра прикладного алгоритма

  • Время работы функции (с указанием единиц измерений)

  • Команды компиляции и запуска (с учётом регистра символов)

  • Исходный код программы


Задание:

  1. Реализовать на языке C или C++ одну из функций на выбор (см. след. раздел). Проверить правильность работы программы.

  2. Измерить время работы вычислительной функции полученной программы с использованием трёх различных способов измерения времени из приложения Б. При этом необходимо придерживаться методики измерения времени.

  3. Параметр прикладного алгоритма необходимо выбрать таким образом, чтобы относительная погрешность измерения времени не превышала 1%.

  4. Реализованную в п. 1 программу скомпилировать компилятором GNU C/C++ Compiler (далее GCC) с уровнями оптимизации -O0, -O1, -O2, -O3 (регистр ключей имеет значение), а также под архитектуру процессора, на котором будет осуществляться запуск программы. Измерить время работы программы при фиксированном параметре – одном и том же значении N для всех уровней.

  5. Объяснить зависимость времени работы программы от уровня оптимизации.

Варианты функций:

  • Вычисление числа Пи с помощью разложения в ряд по формуле:

п
араметр N – число итераций.


  • Вычисление определенного интеграла сложной функции методом трапеций:

f
(x)=exsin(x), a = 0, b = π.

Параметр: N - число интервалов.


  • Вычисление квадратного корня с помощью алгоритма Ньютона:

Сходящаяся серия итераций: ai+1 = (ai + x / ai) / 2.

Начальное значение a0 можно взять произвольным.

Параметр: N - число итераций.


  • Сортировка методом пузырька.

Дан массив случайных чисел длины N. На первой итерации попарно упорядочиваются все соседние элементы; на второй - все, кроме последнего; на третьей - кроме последнего и предпоследнего и т.п.

Параметр: N - размер массива.


  • Вычисление числа Пи метом Монте-Карло.

Генерируется N точек (x;y), равномерно распределенных на квадрате [0;1]x[0;1]. Вычисляется M - число точек, попавших в четверть круга с радиусом 1 (x2+y2≤1). Число Пи можно приближенно вычислить по формуле:

П
араметр: N – число точек.
Контрольные вопросы:

  1. Почему при многократном измерении времени работы программы наиболее точным является минимальное время, а не среднее?

  2. Почему не существует одного универсального способа измерения времени?

  3. Назовите способы измерения времени работы программы. Перечислите их особенности.

  4. Каким способом лучше измерять большие промежутки времени (порядка нескольких часов)?

  5. Каким способом лучше измерять малые промежутки времени (порядка времени работы нескольких команд процессора)?

  6. Всегда ли оптимизирующая компиляция позволяет уменьшить время работы программы?

  7. Чем отличается общая оптимизация от оптимизации под архитектуру?


Приложение 1. Методика измерения времени:

Существуют различные способы измерения времени работы программы или её частей (далее – программы). Все они имеют в основе одну и ту же схему: снимается показание некоторого таймера перед началом исполнения программы и после её завершения. Разница показаний таймера и является измеренным интервалом.

Рассмотрим способы повышения точности измерения времени работы.

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

Контроль погрешности измерения. Каждый способ измерения времени обладает погрешностями. То есть, даже если исключить другие сторонние факторы, влияющие на производительность программы, измерение будет попадать в некоторую окрестность гипотетического идеального измерения. Погрешность способа измерения времени объясняется, во-первых, его неточностью, и, во-вторых, дискретностью шкалы измерения.

Избавиться от погрешности измерительного прибора невозможно, и следует проконтролировать степень его влияния на результат. Необходимо следить за тем, чтобы погрешности измерения – абсолютная и относительная – были допустимыми.

Абсолютная погрешность измеряется в секундах, относительная – в процентах от измеряемого интервала. Например, если известно, что абсолютная погрешность (или точность) таймера составляет одну секунду, а измеряемый интервал составляет полторы минуты, то относительная погрешность измерения времени составит 1/90=1,11%.

Требования к погрешности могут быть различны в зависимости от того, для чего измеряется время, и предъявляться как к относительной, так и абсолютной погрешности.

Исключение из измерения стадий инициализации и завершения. Если требуется измерить время работы некоторого фрагмента кода, например, функции, а не всей программы, то целесообразно вынести за измерение времени весь код программы, предшествующий вызову функции, а второе измерение осуществлять сразу после завершения её работы. Особенно это касается команд работы с устройствами ввода-вывода (чтение с клавиатуры, вывод на экран, работа с файлами) и, в меньшей степени, команды работы с памятью.

Уменьшение влияния функций измерения времени. Сами функции измерения времени работают не мгновенно. Это означает, что в измеряемый интервал времени частично попадает и время их работы. Это влияние следует, по возможности, уменьшать. Во-первых, не вызывать эти функции часто, например, в циклах. В идеале, функция замера времени должна быть вызвана лишь дважды – в начале и в конце работы измеряемого фрагмента кода. Во-вторых, необходимо следить за тем, чтобы измеряемый интервал был на много больше, чем время работы функции замера времени. Тут соображения те же, что и в пункте «контроль погрешности измерения».

Измерение времени работы процесса. В случаях, когда процессор загружен другими процессами (например, системными процессами или задачами других пользователей) для получения более точного результата целесообразно измерять время работы процесса (см. соответствующие способы в приложении Б).

Освобождение буфера файловой системы. В современных ОС, как правило, используется механизм кэширования при работе с внешней памятью, например, жесткими дисками. В этом случае при записи данных на диск данные попадают в буфер ОС, а на диск будут записаны позже. Этот механизм служит для ускорения доступа к файлам и уменьшению износа аппаратного обеспечения. В таких ОС возможна ситуация, когда во время работы вашей программы ОС решит сгрузить накопленные данные на диск, что наверняка повлияет на чистоту эксперимента. Поэтому бывает полезно перед проведением замеров времени освобождать этот буфер файловой системы. В ОС GNU Linux/UNIX это делается с помощью утилиты sync. Можно набрать эту команду перед запуском своей программы из командной строки, либо вызвать её прямо из кода своей программы с помощью системного вызова system (см. system(3) man page).
Приложение 2. Способы измерения времени

Утилита time. Во многих конфигурациях ОС GNU Linux/UNIX имеется утилита time, которая позволяет измерять время работы приложения. Пример использования этой утилиты:

user@host:~$ time ./program.exe

real 0m0.005s

user 0m0.004s

sys 0m0.000s
Примечание: Тут и далее, строка ‘user@host:~$’ предваряет пользовательский ввод команд командной строки, она может отличаться на разных системах, вводить её не нужно, она приводится в примерах для того, чтобы обозначить, что идёт ввод команды.

Утилита time выдаёт следующие временные характеристики работы программы: real – общее время работы программы согласно системному таймеру, user – время, которое работал пользовательский процесс (кроме времени работы других процессов) и sys – время, затраченное на выполнение системных вызовов программы.

Дополнительная информация: time(1) man page.

Точность: определяется точностью системного таймера и точностью измерения времени работы процесса (см. описание соответствующих способов)

Достоинство: не требуется вносить изменения в программу, готовая утилита

Недостаток: измеряется только время работы всей программы, а не отдельных её частей.
Системный таймер (с помощью функции clock_gettime). В ОС GNU Linux/UNIX получение значения системного таймера возможно с помощью библиотечной функции clock_gettime. Пример использования:
#include // for printf

#include // for clock_gettime

int main(){

struct timespec start, end;
clock_gettime(CLOCK_REALTIME, &start);

// some work

clock_gettime(CLOCK_REALTIME, &end);

printf("Time taken: %lf sec.\n", end.tv_sec-start.tv_sec

+ 0.000000001*(end.tv_nsec-start.tv_nsec));

return 0;

}
Функция clock_gettime с параметром CLOCK_REALTIME cохраняет значение системного таймера в структуру struct timespec, которая состоит из двух полей tv_sec и tv_nsec (можно считать их тип long int), задающих количество секунд и наноосекунд (10−9 c), прошедших с 00:00 1 января 1970 г. В этом примере сохраняется значение таймера перед выполнением некоторого кода и после него. Разница показаний преобразуется в секунды и выводится на экран.

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

Реализация функции clock_gettime находится в библиотеке rt, поэтому при компиляции программы необходимо добавить ключ компиляции –lrt. Пример команды компиляции (в некоторых системах требуется ключ –lrt писать в конце команды):
user@host:~$ gcc prog.c –o prog -lrt
Дополнительная информация: clock_gettime man page
  1   2   3

Похожие:

Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем» icon Программа по дисциплине «Архитектура ЭВМ и систем»
Учебная программа по дисциплине «Архитектура ЭВМ и систем» составлена в соответствии с требованиями гос впо. Предназначена для студентов...
Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем» icon Методические указания по выполнению практических работ ен. 02 Информатика
Методические указания разработаны на основе рабочей программы по учебной дисциплине ен. 02 «Информатика» по специальности 270101...
Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем» icon Программа дисциплины «Архитектура ЭВМ и вычислительных систем»
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления 230100. 62 "Информатика...
Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем» icon Конспект лекций
Архитектурная организация процессора ЭВМ. Структура машинной команды. Способы адресации. Особенности архитектур микропроцессоров....
Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем» icon Методические указания к практическим работам по учебной дисциплине
Методические указания к практическим работам по учебной дисциплине История отечественного государства и права для студентов спо специальности...
Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем» icon Программа дисциплины Архитектура вычислительных систем для направления...
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления 09. 03. 04 "Программная...
Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем» icon В 2006 году автором было издано учебное пособие «Периферийные устройства...
Пу в вычислительных системах; 2 организации обмена данными в эвм; 3 назначения, принцип действия, структуры и программирования последовательного...
Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем» icon Методические указания по выполнению практических работ по учебной дисциплине
Методические указания для выполнения практических работ разработаны на основе программы учебной дисциплины «Устранение и предупреждение...
Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем» icon Методические указания по курсовому проектированию по дисциплине «Проектирование...
Электронный ресурс]: методические указания / О. Ф. Абрамова// Сборник «Методические указания» Выпуск. Электрон текстовые дан.(1файл:...
Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем» icon Методические указания по выполнению лабораторных работ по дисциплине “Базы данных”
Методические указания предназначены для студентов специальностей 230401 «Прикладная математика», 230105 «Программное обеспечение...
Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем» icon Методические указания по дисциплине “Базы данных и субд”
Методические указания предназначены для студентов специальностей 230105 «Программное обеспечение вычислительной техники и автоматизированных...
Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем» icon Методические указания по дисциплине “Системы управления базами данных”
Методические указания предназначены для студентов специальностей 230105 «Программное обеспечение вычислительной техники и автоматизированных...
Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем» icon Методические указания к лабораторному практикуму по дисциплине «Основы...
Методические указания к лабораторному практикуму по дисциплине «Основы автоматики и теория устройства технических систем» для курсантов...
Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем» icon Методические указания по выполнению практических работ по дисциплине...
Методические указания предназначены для закрепления теоретических знаний и приобретения необходимых практических навыков и умений...
Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем» icon Методические указания по выполнению самостоятельной внеаудиторной...
Методические указания по выполнению внеаудиторной самостоятельной работы по учебной дисциплине иностранный язык предназначены для...
Методические указания к расчетно-графическим заданиям по учебной дисциплине «Архитектура ЭВМ и вычислительных систем» icon Угловые измерения в геодезии методические указания к выполнению лабораторных...
Занятия по изучению устройства теодолита, выполнению поверок и юстировок теодолита, а также по измерению горизонтальных и вертикальных...

Руководство, инструкция по применению




При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск