Оптимизации циклов Loop Interchange – перестановка циклов for ( i = 0; i < N; i++ ) for ( j = 0; j < M; j++ ) c [j] [i] = a [j] [i] * k; Применимость:

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



Advertisements
Похожие презентации
Оптимизация циклов Юрий Долгов, Дмитрий Шкурко. Optimization of applications for Intel* platforms Оптимизация Уменьшение требований к ресурсам Времени.
Advertisements

Основные типы алгоритмических структур. Линейный алгоритм ( следование ) Алгоритм, в котором команды выполняются последовательно одна за другой, называется.
Основы языка PL/SQL Управляющие конструкции Границы моего языка означают границы моего мира. Людвиг Виттгенштейн.
Оптимизации циклических конструкций. 10/17/10 FE (C++/C или Fortran) Внутреннее представление Профилировщик Скалярные оптимизации HPO Генератор кода Исходные.
Алгоритм Леонид 10 класс. Алгоритм - это строго детерминированная последовательность действий, описывающая процесс преобразования объекта из начального.
Что произойдет, если на каждой итерации цикла For… To уменьшать счетчик? а) программа «зациклится»; б) цикл выполнится меньшее количество раз; в) возникнет.
Основные типы алгоритмических структур. Линейный алгоритм (следование). Алгоритм, в котором команды выполняются последовательно одна за другой, называется.
Циклы с предусловием Pascal. Цикл - это многократное повторение последовательности действий по некоторому условию. это многократное повторение последовательности.
Алгоритмические структуры 1.Линейный 2.Ветвление 3.Цикл.
Операторы. Оператор выбора Оператор выбора Оператор выбора Оператор выбора Оператор присваивания Оператор присваивания Оператор присваивания Оператор присваивания.
1. a=? b=? c=? {int a, b, c; a=(b=2+3)/2 - 4+(c=5%2); printf("%d %d %d \n", a, b, c); }
Кодирование основных алгоритмических структур на языках объектно-ориентированного и процедурного программирования Помаскин Юрий Иванович МБОУ СОШ 5 г.
Основные типы алгоритмических структур. Линейный алгоритм линейным алгоритмом Алгоритм, в котором команды выполняются последовательно одна за другой,
Кодирование основных типов алгоритмических структур на языках объектно ориентированного и процедурного программирования. Автор: Артебякин Степан Александрович.
Операторы языка. Арифметические операторы Арифметические операторы Арифметические операторы Арифметические операторы Операторы сравнения Операторы сравнения.
Организация циклов Компьютер может заданное число раз выполнить одни и те же действия с разными данными. Повторяющиеся действия в программировании называются.
Операторы языка Си Лекция 5.
Язык программирования Delphi. Алфавит языка 53 буквы латинского алфавита и символ подчеркивания Цифры от 0 до 9 23 спец.символа
Глава 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор присваивания Простой и составной операторы Условный оператор Оператор множественного выбора Оператор цикла с предусловием.
Часть 1 If если then else еnd if то, тогда иначе всё, конец ветвления.
Транксрипт:

Оптимизации циклов Loop Interchange – перестановка циклов for ( i = 0; i < N; i++ ) for ( j = 0; j < M; j++ ) c [j] [i] = a [j] [i] * k; Применимость: 1)Гнездо циклов плотное (для любого 1

Оптимизации циклов Loop Fusion – слияние циклов for ( i = 0; i < N; i ++ ) a [i] = a [i] + m; for ( i = 0; i < N; i ++ ) b [i] = b [i] * k; Применимость: 1)Циклы смежные 2)Циклы с одним выходом 3)Отсутствуют перекрестные зависимости 4)Циклы не содержат CALL

Оптимизации циклов Runtime Memory Disambiguation – динамический разрыв зависимостей for ( i = …, j = … ; i < … j < ; i += …, j += … ) a [i] = …; … … = … + a [j] …; for ( i = …, j = … ; i < … j < ; i += …, j += … ) if ( i == j ) … = … + a [j] …; … a [i] = …;

Оптимизации циклов Loop Peeling – вынос итераций из цикла while ( cond )if ( cond ) expr; while ( cond ) expr; Full Loop Peeling (Loop To Scalar) – раскрутка цикла for ( i = 0; i < 2; i++ )i = 0; expr; expr;i = 1; expr; i = 2;

Оптимизации циклов Loop Nesting– слияние циклов for ( i = 0; i < N; i++ ) if ( cond ) expr; i = 0; label1: for ( ; i < N; i++ ) if ( cond ) goto label2; goto end; label2: expr; goto label1; end: ;

Оптимизации циклов Loop Unswitching – раскоммутация циклов for ( i = 0; i < N; i++ ) if ( cond ) a [i] = 0; else b [i] = 0; if ( cond ) for ( i = 0; i < N; i++ ) a [i] = a [i] + m; else for ( i = 0; i < N; i++ ) b [i] = b [i] * k; Применимость: Внутри цикла есть инвариантные условия

Оптимизации циклов Loop Collapsing – слияние циклов for ( i = 0; i

Оптимизации циклов Loop Unroll – раскрутка циклов for ( i = 2; i

Оптимизации циклов Loop Under Condition– постановка цикла под условие for ( i = 0; i < N; i++ ) x = x + y; if ( cond ) a = x; if ( cond ) for ( i = 0; i < N; i++ ) x = x + y; a = x;