d56102755c31ac350f20fa859aa250b9.ppt
- Количество слайдов: 38
Представление чисел. Использование SIMD-расширений x 86. Функции замера времени. Куликов Игорь Михайлович kulikov@ssd. sscc. ru
Представление чисел 2
Классификация простых типов данных l Целочисленные типы данных – – l Вещественные типы данных – – 3 Размер данных (char, int, long) Знаковый/без знаковый тип (unsigned, signed) Одинарная точность (float) Двойная точность (double)
Целые числа без знака (unsigned char, unsigned int, unsigned long) 4
Целые числа со знаком (char, int, long) Структура целого числа со знаком 5
Целые числа со знаком (char, int, long) 6
Отрицательные целые числа со знаком Находим двоичное представление модуля числа l Находим двоичное дополнение, то есть инвертируем все разряды числа l Прибавляем единицу l 7
Пример представления отрицательного числа -84 8
Структура вещественных типов данных 9
Представление числа 0. 15625 в типе float 10
Представление числа -118. 625 в типе float 11
Структура типа double 12
Допустимые значения l Целые числа – – l Вещественные числа – – 13 char -128. . . 127 unsigned char 0. . . 255 int -2147483648. . . 2147483647 unsigned int 0. . . 4294967295 float: порядок -38… 38, значащие знаки 7 double: порядок -308… 308, значащие знаки 14
Использование SIMD-расширений x 86 14
Векторные операции 15
SIMD (Single Instruction Multiple Data) SIMD-расширения (Single Instruction Multiple Data) были введены в архитектуру x 86 с целью повышения скорости обработки потоковых данных. Основная идея заключается в одновременной обработке нескольких элементов данных за одну инструкцию. 16
SIMD (Single Instruction Multiple Data) 17
SIMD (Single Instruction Multiple Data) Арифметика с насыщением Для 8 -битного без знакового целого x: l обычная арифметика: x=254; x+=3; // результат x=1 l арифметика с насыщением: x=254; x+=3; // результат x=255 18
Пример программы скалярного произведения с использованием функций SSE 19 float dot(float *x, float *y, int n) { float sum; int i; __m 128 *xx, *yy; __m 128 p, s; xx=(__m 128 *)x; yy=(__m 128 *)y; s=_mm_set_ps 1(0); for (i=0; i
SIMD – расширения основных процессоров и область применения l l l SSE для процессоров Intel 3 DNow! для процессоров AMD Alti. Vec для процессоров Power. PC от IBM Область применения: l Мультимедиа приложения (видео, графика, звук, …) 20
Функции замера времени 21
Функция clock l l 22 Библиотечная функция определена в заголовочном файле time. h Прототип clock_t clock(); Возвращает время, прошедшее с момента запуска программы в единицах 1/CLK_TCK секунды Используется в Windows
Пример использования функции clock #include
Достоинства и недостатки функции clock l Достоинства: ü l Недостатки: ü 24 высокая платформенная независимость низкая точность, при высокой загрузке процессора – неприемлемая точность, так как измеряется интервал времени, во время которого помимо процесса исследуемой программы исполнялись и другие процессы
Функция gettimeofday l l Библиотечная функция определена в заголовочном файле systime. h Прототип gettimeofday(struct timeval* tv, struct timezone* tz); l l 25 Время можно вычислить из структуры timeval Используется в UNIX int
Пример использования функции gettimeofday #include
Пример использования функции gettimeofday #include
Достоинства и недостатки функции gettimeofday l Достоинства: ü l Недостатки: ü 28 высокая платформенная независимость низкая точность, при высокой загрузке процессора – неприемлемая точность, так как измеряется интервал времени, во время которого помимо процесса исследуемой программы исполнялись и другие процессы
Функция times l l 29 Библиотечная функция определена в заголовочном файле sys/times. h Прототип clock_t times(struct tms *buf); Возвращает время, прошедшее с момента запуска программы в единицах 1/CLK_TCK секунды Используется в UNIX
Пример использования функции times #include
Пример использования функции times #include
Достоинства и недостатки функции times l Достоинства: ü l Недостатки: ü 32 высокая точность (относительная независимость от других процессов системы) для малых интервалов она зависит от интервала времени прерываний по таймеру
Функции Query. Performance. Frequency и Query. Performance. Counter l l l 33 Платформенно-зависимый вариант для OS Windows как функция Win. API Возвращает число тактов с момента запуска процессора Используется в Windows
Функции Query. Performance. Frequency и Query. Performance. Counter #include
Функции Query. Performance. Frequency и Query. Performance. Counter l Достоинства: ü l Недостатки: ü ü 35 максимально возможная точность зависимость от архитектуры процессора ухудшение точности при высокой загрузке процессора
Лабораторные работы l l 36 Использование SIMD-расширений архитектуры x 86 (10 баллов) Использование оптимизирующего компилятора (10 баллов) Исследование вопросов тестирования производительности (20 баллов) Программирование многоядерных архитектур (40 баллов)
Выполнение лабораторных работ l l l 37 Первая контрольная неделя – 2 балла: сдана и защищена первая л. р. , сдана вторая л. р. – 1 балл : сдана и защищена первая л. р. Вторая контрольная неделя – 2 балла : сданы и защищены первая, вторая и третья л. р. – 1 балл : сдана и защищена первая и вторая л. р. Зачёт – Претендент на автомат: 4 балла за К. Н. , сданы и защищены все лабораторные работы – Допуск на зачёт: 51 балл за л. р. (следующая л. р. выполняется только после выполнение текущей)
Расписание консультаций l 38 Каждый понедельник начиная с 1 марта в 9: 00 во 2 -м корпусе, аудитория 418


