Представление чисел. Использование SIMD-расширений x86. Функции замера времени. Куликов Игорь Михайлович kulikov@ssd.sscc.ru.

Презентация:



Advertisements
Похожие презентации
Функции замера времени.
Advertisements

Измерение времени в ЭВМ С.Е. Киреев, В.П. Маркова, М.Б. Остапкевич, В.А. Перепелкин Новосибирск 2013 НГТУ Кафедра параллельного программирования.
Типовые расчёты Растворы

Ребусы Свириденковой Лизы Ученицы 6 класса «А». 10.
Школьная форма Презентация для родительского собрания.
Урок повторения по теме: «Сила». Задание 1 Задание 2.
Маршрутный лист «Числа до 100» ? ? ?
Лекция 2Лекция 2Структура программы Директивы препроцессора main () { Описания переменных Операторы }
Michael Jackson
Некоторые вопросы оптимизации.

Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.

1. Определить последовательность проезда перекрестка
Тренировочное тестирование-2008 Ответы к заданиям КИМ Часть I.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Непараметрические критерии согласия Критерии Купера и Ватсона Тел
Разработал: Учитель химии, биологии высшей квалификационной категории Баженов Алексей Анатольевич.
Материалы совета кураторов 30 ноября 2011 года. Применяемая терминология Дисциплина является сложной, если в группе более 50% задолжников в течение семестра.
Транксрипт:

Представление чисел. Использование SIMD-расширений x86. Функции замера времени. Куликов Игорь Михайлович

2 Представление чисел

3 Классификация простых типов данных Целочисленные типы данных – Размер данных (char, int, long) – Знаковый/без знаковый тип (unsigned, signed) Вещественные типы данных – Одинарная точность (float) – Двойная точность (double)

4 Целые числа без знака (unsigned char, unsigned int, unsigned long)

5 Целые числа со знаком (char, int, long) Структура целого числа со знаком

6 Целые числа со знаком (char, int, long)

7 Отрицательные целые числа со знаком Находим двоичное представление модуля числа Находим двоичное дополнение, то есть инвертируем все разряды числа Прибавляем единицу

8 Пример представления отрицательного числа -84

9 Структура вещественных типов данных

10 Представление числа в типе float

11 Представление числа в типе float

12 Структура типа double

13 Допустимые значения Целые числа – char – unsigned char – int – unsigned int Вещественные числа – float: порядок -38…38, значащие знаки 7 – double: порядок -308…308, значащие знаки 14

14 Использование SIMD-расширений x86

15 Векторные операции

16 SIMD (Single Instruction Multiple Data) SIMD-расширения (Single Instruction Multiple Data) были введены в архитектуру x86 с целью повышения скорости обработки потоковых данных. Основная идея заключается в одновременной обработке нескольких элементов данных за одну инструкцию.

17 SIMD (Single Instruction Multiple Data)

18 SIMD (Single Instruction Multiple Data) Арифметика с насыщением Для 8-битного без знакового целого x: обычная арифметика: x=254; x+=3; // результат x=1 арифметика с насыщением: x=254; x+=3; // результат x=255

19 Пример программы скалярного произведения с использованием функций SSE float dot(float *x,float *y,int n) { float sum; int i; __m128 *xx,*yy; __m128 p,s; xx=(__m128 *)x; yy=(__m128 *)y; s=_mm_set_ps1(0); for (i=0;i

20 SIMD – расширения основных процессоров и область применения SSE для процессоров Intel 3DNow! для процессоров AMD AltiVec для процессоров PowerPC от IBM Область применения: Мультимедиа приложения (видео, графика, звук, …)

21 Функции замера времени

22 Функция clock Библиотечная функция определена в заголовочном файле time.h Прототип clock_t clock(); Возвращает время, прошедшее с момента запуска программы в единицах 1/CLK_TCK секунды Используется в Windows

23 Пример использования функции clock #include int main() {double pi; clock_t t; t=clock(); // начало замера времени pi = pi_calculate(); t=clock()-t; // окончание замера времени printf("Time: %lf msec Pi = %lf\n",t*1000.0/CLK_TCK,pi); return 0; }

24 Достоинства и недостатки функции clock Достоинства: высокая платформенная независимость Недостатки: низкая точность, при высокой загрузке процессора – неприемлемая точность, так как измеряется интервал времени, во время которого помимо процесса исследуемой программы исполнялись и другие процессы

25 Функция gettimeofday Библиотечная функция определена в заголовочном файле sys\time.h Прототип int gettimeofday(struct timeval* tv, struct timezone* tz); Время можно вычислить из структуры timeval Используется в UNIX

26 Пример использования функции gettimeofday #include struct timeval tv1,tv2,dtv; struct timezone tz; void time_start() { gettimeofday(&tv1, &tz); } double time_stop() { gettimeofday(&tv2, &tz); dtv.tv_sec= tv2.tv_sec - tv1.tv_sec; dtv.tv_usec=tv2.tv_usec - tv1.tv_usec; if(dtv.tv_usec

27 Пример использования функции gettimeofday #include int main() {double pi; time_start(); // начало замера времени pi = pi_calculate(); // окончание замера времени printf("Time: %lf msec Pi = %lf\n",time_stop(),pi); return 0; }

28 Достоинства и недостатки функции gettimeofday Достоинства: высокая платформенная независимость Недостатки: низкая точность, при высокой загрузке процессора – неприемлемая точность, так как измеряется интервал времени, во время которого помимо процесса исследуемой программы исполнялись и другие процессы

29 Функция times Библиотечная функция определена в заголовочном файле sys/times.h Прототип clock_t times(struct tms *buf); Возвращает время, прошедшее с момента запуска программы в единицах 1/CLK_TCK секунды Используется в UNIX

30 Пример использования функции times #include struct tms tmsBegin,tmsEnd; void time_start() { times(&tmsBegin); } double time_stop() { times(&tmsEnd); return ((tmsEnd.tms_utime-tmsBegin.tms_utime)+ (tmsEnd.tms_stimetmsBegin.tms_stime))*1000.0/CLK_TCK; }

31 Пример использования функции times #include int main() {double pi; time_start(); // начало замера времени pi = pi_calculate(); // окончание замера времени printf("Time: %lf msec Pi = %lf\n",time_stop(),pi); return 0; }

32 Достоинства и недостатки функции times Достоинства: высокая точность (относительная независимость от других процессов системы) Недостатки: для малых интервалов она зависит от интервала времени прерываний по таймеру

33 Функции QueryPerformanceFrequency и QueryPerformanceCounter Платформенно-зависимый вариант для OS Windows как функция WinAPI Возвращает число тактов с момента запуска процессора Используется в Windows

34 #include int main() { LARGE_INTEGER b_start,b_stop,b_time,freq; double time, pi; QueryPerformanceFrequency(&freq); QueryPerformanceCounter(&b_start); pi = pi_calculate(); QueryPerformanceCounter(&b_stop); b_time.QuadPart = b_stop.QuadPart - b_start.QuadPart; time = (double)(b_time.QuadPart)/(double)(freq.QuadPart); printf("Time: %lf sec Pi = %lf\n",time,pi); return 0; } Функции QueryPerformanceFrequency и QueryPerformanceCounter

35 Достоинства: максимально возможная точность Недостатки: зависимость от архитектуры процессора ухудшение точности при высокой загрузке процессора Функции QueryPerformanceFrequency и QueryPerformanceCounter

36 Лабораторные работы Использование SIMD-расширений архитектуры x86 (10 баллов) Использование оптимизирующего компилятора (10 баллов) Исследование вопросов тестирования производительности (20 баллов) Программирование многоядерных архитектур (40 баллов)

37 Выполнение лабораторных работ Первая контрольная неделя – 2 балла: сдана и защищена первая л.р., сдана вторая л.р. – 1 балл : сдана и защищена первая л.р. Вторая контрольная неделя – 2 балла : сданы и защищены первая, вторая и третья л.р. – 1 балл : сдана и защищена первая и вторая л.р. Зачёт – Претендент на автомат: 4 балла за К.Н., сданы и защищены все лабораторные работы – Допуск на зачёт: 51 балл за л.р. (следующая л.р. выполняется только после выполнение текущей)

38 Расписание консультаций Каждый понедельник начиная с 1 марта в 9:00 во 2-м корпусе, аудитория 418