Скачать презентацию Использование целочисленного линейного программирования для планирования команд линейных Скачать презентацию Использование целочисленного линейного программирования для планирования команд линейных

630406.ppt

  • Количество слайдов: 34

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

Введение: * Программная конвейеризация циклов, эвристические подходы, планирование по модулю. Пример конвейеризации простого цикла. Введение: * Программная конвейеризация циклов, эвристические подходы, планирование по модулю. Пример конвейеризации простого цикла. * Проблема с временем распределения регистров, сохранение и восстановление регистров. * Особенности характерные для встраиваемых архитектур и их влияние на задачу планирования команд. * Точные подходы к планированию.

for (i=0; i<N; i++) a[i] = b[i] + c[i]; 1 2 3 4 5 for (i=0; i

Пусть процессор способен одновременно исполнять две команды, одну арифметическую и один доступ в память Пусть процессор способен одновременно исполнять две команды, одну арифметическую и один доступ в память или передачу управления: 1 2 3 4 7 r 227=[r 222] r 228=[r 221] r 229=r 227+r 228 [r 220]=r 229 r 220=r 220+0 x 4 5 r 222=r 222+0 x 4 6 r 221=r 221+0 x 4 8 pc={(r 222!=r 230)? L 43: pc} Целых 5 тактов даже без учета латентностей!

Пролог: 1 r 227=[r 222] 2 r 228=[r 221] 3 r 229=r 227+r 228 Пролог: 1 r 227=[r 222] 2 r 228=[r 221] 3 r 229=r 227+r 228 5 r 222=r 222+0 x 4 6 r 221=r 221+0 x 4 1 r 227=[r 222] 2 r 228=[r 221] 5 r 222=r 222+0 x 4 L 43: 1 r 227=[r 222] 2 r 228=[r 221] 3 r 229=r 227+r 228 5 r 222=r 222+0 x 4 [2] [1] [2] Эпилог: 4 [r 220]=r 229 7 r 220=r 220+0 x 4 3 r 229=r 227+r 228 4 [r 220]=r 229 6 r 221=r 221+0 x 4 7 r 220=r 220+0 x 4 6 7 4 8 r 221=r 221+0 x 4 r 220=r 220+0 x 4 [r 220]=r 229 pc={(r 222!=r 230)? L 43: pc} [1] [0] [0]

Дистанция 0 1 -> 3 (2) 2 -> 3 (2) 3 -> 4 (4) Дистанция 0 1 -> 3 (2) 2 -> 3 (2) 3 -> 4 (4) 5 -> 8 (1) Дистанция 1 1 2 3 4 5 6 7 8 r 227=[r 222] r 228=[r 221] r 229=r 227+r 228 [r 220]=r 229 r 222=r 222+0 x 4 5 -> 5 1 (1) r 221=r 221+0 x 4 6 -> 6 2 (1) r 220=r 220+0 x 4 7 -> 7 4 (1) pc={(r 222!=r 230)? L 43: pc}

Особенности характерные для встраиваемых архитектур и их влияние на задачу планирования команд. * Малое Особенности характерные для встраиваемых архитектур и их влияние на задачу планирования команд. * Малое число регистров. * Специализация регистров. * Упрощенные алгоритмы планирования в процессоре. * Сложные правила соместимости команд для архитектур с явным параллелизмом.

Точные подходы к планированию. * Попытка найти оптимальное расписание. * Необходимость совместно решать связанные Точные подходы к планированию. * Попытка найти оптимальное расписание. * Необходимость совместно решать связанные задачи. * Применяемые подходы. Математическое программирование, программирование в ограничениях и др. * Подход выбранный нами: не распределяем регистры, но гарантируем успех при распределении. Используем ЦЛП.

Использование вания. целочисленного линейного программиро- * Что такое ЦЛП. * Формулировка задачи планирования линейного Использование вания. целочисленного линейного программиро- * Что такое ЦЛП. * Формулировка задачи планирования линейного участка в виде ЦЛП задачи (упрощенный подход). * Отличие конвейеризации цикла от планирования линейного участка, модификация ЦЛП описания.

Задача линейного программирования (ЛП, LP) - задача оптимизации. Она состоит из: множества переменных; набора Задача линейного программирования (ЛП, LP) - задача оптимизации. Она состоит из: множества переменных; набора линейных равенств или нестрогих (ограничения); целевой линейной функции. неравенств

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

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

Что может случиться на практике. Допустимой память. точки не нашли - исчерпано время или Что может случиться на практике. Допустимой память. точки не нашли - исчерпано время или Есть допустимая точка, но оптимальность не доказана - исчерпано время или память. Решение прервано - не хватает точности вычислений.

# Планирование команд линейного участка неотрицательная целая константа T для каждой команды i: для # Планирование команд линейного участка неотрицательная целая константа T для каждой команды i: для каждого t из 1. . T: бинарные переменные N[i, t] # Однократное выполнение для каждой команды i: N[i, T] = 1 # Неубывание выполненности для каждой команды i: для каждого t из 2. . T: N[i, t-1] <= N[i, t]

N[r, 1] = 0. . . . N[r, l] = 0 N[r, l+1] <= N[r, 1] = 0. . . . N[r, l] = 0 N[r, l+1] <= N[w, 1] N[r, l+2] <= N[w, 2]. . . . N[r, T] <= N[w, T-l]

# Соблюдение зависимостей для каждой зависимости (w, r, l): N[r, l] = 0 для # Соблюдение зависимостей для каждой зависимости (w, r, l): N[r, l] = 0 для каждого t из l+1. . T: N[r, t] <= N[w, t-l] # Ограничения по ресурсам # S(i, t)=1 <==> команда i запущена на такте t макро S(i, t) = если t = 1: N[i, 1] иначе: N[i, t] - N[i, t-1] для каждого вида ресурса r: для каждого такта t из 1. . T: ( сумма по всем командам i сумма по тактам tp из 1. . t Use. Res[i, t-tp, r] * S(i, tp) ) <= All. Res[r]

# Ограничение на число регистров, достаточное условие для каждого t из 1. . T: # Ограничение на число регистров, достаточное условие для каждого t из 1. . T: ( сумма по всем командам i ((W[i]-R[i]) * N[i, t]) ) <= All. Reg

# Конвейеризация цикла неотрицательная целая константа T для каждой команды i: для каждого t # Конвейеризация цикла неотрицательная целая константа T для каждой команды i: для каждого t из 1. . T: неотрицательные целые переменные N[i, t] для каждой команды i: для каждого t из 2. . T: N[i, t-1] <= N[i, t] для каждой команды i: N[i, T] <= N[i, 1] + 1

макро N(i, t) = если t < 1: N(i, t+T) - 1 если t макро N(i, t) = если t < 1: N(i, t+T) - 1 если t > T: N(i, t-T) + 1 иначе: N[i, t] макро S(i, t) = # Рекурсивное # определение N(i, t) - N(i, t-1) для каждой команды i: N(i, 0) >= 0 # Ограничение по ресурсам для каждого вида ресурса r: для каждого t из 1. . T: ( сумма по всем командам i сумма по tp из t-M. . t Use. Res[i, t-tp, r] * S(i, tp) ) <= All. Res[r]

# Ограничение на соблюдение зависимостей для каждой зависимости (w, r, l, d): для каждого # Ограничение на соблюдение зависимостей для каждой зависимости (w, r, l, d): для каждого t из 1. . T: N(r, t) - d <= N(w, t-l) # Ограничение на число регистров, достаточное условие для каждого t из 1. . T: Dist. Sum + ( сумма по всем командам i ((W[i]-R[i]) * N[i, t]) ) <= All. Reg

# Минимальная глубина конвейеризации неотрицательная целая переменная Conv. Depth цель: минимизация Conv. Depth для # Минимальная глубина конвейеризации неотрицательная целая переменная Conv. Depth цель: минимизация Conv. Depth для каждой команды i: N[i, T] <= Conv. Depth

Сколько физических регистров требуется для хранения a? 1 2 3 4 a b c Сколько физических регистров требуется для хранения a? 1 2 3 4 a b c d = m[i] += a - 3 = 2*a

# Необходимое и достаточное условие достаточности # регистров для каждого t из 1. . # Необходимое и достаточное условие достаточности # регистров для каждого t из 1. . T: для каждого виртуального регистра vr: неотрицательные целые переменные Reg. For[vr, t] для каждой зависимости (w, r, l, d, vr): для каждого t из 1. . T: (N(w, t)+d) - N(r, t) <= Reg. For[vr, t] для каждого t из 1. . T: сумма по всем vr: Reg. For[vr, t] <= All. Reg

Проблемы организации результатов вычислений и использования их * Что делать если для зависимости выделено Проблемы организации результатов вычислений и использования их * Что делать если для зависимости выделено несколько регистров? Копирование регистров или раскатка цикла. Кратность раскатки. * Что делать, если решение долго не находится? * Как перебирать значения может закончиться? * Возможность принудительного ограничения глубины конвейеризации и/или кратности раскатки. * Чем в конечном итоге решаются ЦЛП задачи. Сравнение солверов. T? И чем этот перебор

Пример расписания требующего раскатки. Ядро цикла: 0: 45 r 226=[r 221] 1: 48 [r Пример расписания требующего раскатки. Ядро цикла: 0: 45 r 226=[r 221] 1: 48 [r 219]=r 228 2: 46 r 227=[r 220] 3: 49 r 221=r 221+0 x 4 [2] [0] [2] 47 51 50 55 r 228=r 226+r 227 [1] r 219=r 219+0 x 4 [0] r 220=r 220+0 x 4 [2] pc={(r 221!=r 229)? L 42: pc}[0] Клонированы регистры: r 226 -> r 236 r 228 -> r 237 r 221 -> r 238 Результат раскатки: 0: 1: 2: 3: r 236=[r 221] [r 219]=r 237 r 227=[r 220] r 238=r 221+0 x 4 r 228=r 226+r 227 r 219=r 219+0 x 4 r 220=r 220+0 x 4 pc={(r 238==r 229)? L 129: pc} 4: 5: 6: 7: r 226=[r 238] [r 219]=r 228 r 227=[r 220] r 221=r 238+0 x 4 r 237=r 236+r 227 r 219=r 219+0 x 4 r 220=r 220+0 x 4 pc={(r 221!=r 229)? L 91: pc}

GLPSOL -- GLPK LP/MIP Solver, Version 4. 11 Copyright (C) 2000, 01, 02, 03, GLPSOL -- GLPK LP/MIP Solver, Version 4. 11 Copyright (C) 2000, 01, 02, 03, 04, 05, 06 Andrew Makhorin e-mail: , paper mail: 125871, Russia, Moscow, Volokolamskoye sh. , 4, Moscow Aviation Institute, Andrew O. Makhorin

lpsolve citation data -----------Description : Open source MILP system Language : Multi-platform, pure ANSI lpsolve citation data -----------Description : Open source MILP system Language : Multi-platform, pure ANSI C / POSIX source code, Lex/Yacc based parsing Official name : lp_solve (alternatively lpsolve) Release data : Version 5. 5. 0. 0 dated 17 may 2005 Co-developers : Michel Berkelaar, Kjell Eikland, Peter Notebaert Licence terms : GNU LGPL (Lesser General Public Licence) Citation policy : General references as per LGPL Module specific references as specified therein ============================== COIN-OR IBM Common Public License Version 1. 0 ============================== cplex Xpress-MP ILOG DASH OPTIMIZATION 100. . 00 $

Первые результаты и их анализ. * Сгенерированный цикл. * Сравнение результатов с результатами работы Первые результаты и их анализ. * Сгенерированный цикл. * Сравнение результатов с результатами работы ристического планировщика (SMS). * Глубина конвейеризации и генерируемых расписаниях. эв- кратность раскатки в

Скалярное произведение векторов (над C) код руется для R 7000. L 46: 51 55 Скалярное произведение векторов (над C) код руется для R 7000. L 46: 51 55 56 57 59 60 61 64 65 66 68 69 70 71 r 220=[r 213] r 219=[r 212] r 218=[r 213+0 x 4] r 217=[r 212+0 x 4] r 226=r 218*r 217 r 227=r 220*r 219 -r 226 r 216=r 216+r 227 r 229=r 219*r 218 r 230=r 220*r 217+r 229 r 215=r 215+r 230 r 214=r 214+0 x 1 r 213=r 213+0 x 8 r 212=r 212+0 x 8 pc={(r 222!=r 214)? L 46: pc генери-

Ядро цикла полученного 0: 69 r 213=r 213+0 x 8 [0] 1: 56 r Ядро цикла полученного 0: 69 r 213=r 213+0 x 8 [0] 1: 56 r 218=[r 213+0 x 4] [0] 2: 3: 59 r 226=r 218*r 217 [1] 4: 55 r 219=[r 212] [0] 5: 66 r 215=r 215+r 230 6: 64 r 229=r 219*r 218 7: 51 r 220=[r 213] [1] 8: 57 r 217=[r 212+0 x 4] [1] SMS: [0] 60 r 227=r 220*r 219 -r 226 [1] 65 r 230=r 220*r 217+r 229 [1] 68 r 214=r 214+0 x 1 [1] 61 r 216=r 216+r 227 [0] [1] 70 r 212=r 212+0 x 8 [2] 71 pc={(r 222!=r 214)? L 46: pc} Результат решения ЦЛП задачи: 0: 56 r 218=[r 213+0 x 4] [2] 65 r 230=r 220*r 217+r 229 [1] 1: 55 r 219=[r 212] [2] 60 r 227=r 220*r 219 -r 226

Тесты планирования циклов для rm 7000 ILP SMS (такты) --------------------------------Сложение векторов (R) 8 8 Тесты планирования циклов для rm 7000 ILP SMS (такты) --------------------------------Сложение векторов (R) 8 8 То же без зависимостей по памяти 5 5 Сложение векторов (C) 8* 8 То же без зависимостей по памяти 7 8 Схема Горнера (R) 4 4 Схема Горнера (C) 12 14 Схема Горнера для массива точек 8 8 Умножение векторов поэлементно (R) 5 5 Умножение векторов поэлементно (C) 23* отказ То же с 3 -мя умножениями 17 20 То же без зависимостей по памяти 9 10 Скалярное произведение (R) 4 4 Скалярное произведение (C) 7 9 Внешнее произведение векторов (R) 4 4 Умножение вектора на константу (R) 7 7 Умножение вектора на константу (C) 17* 18 Транспонирование матриц 3 4 4 нецентральных момента 6 6 Среднее гармоническое 36 36 Синонимы 7 7 sqrt(1/a[0]+sqrt(1/a[1]+. . . 72 73 *) - результат возможно неоптимальный

ILP SMS --------------------------flops. c 36 36 4 4 36 36 18 21 16 19 ILP SMS --------------------------flops. c 36 36 4 4 36 36 18 21 16 19 36 36 32 39 108 109 34 41

Планы по дальнейшему развитию. * Использование вне компилятора. * Эксперименты с настройкой компилятора для Планы по дальнейшему развитию. * Использование вне компилятора. * Эксперименты с настройкой компилятора для процессоров без кэша и с небольшим кэшом требующим явного управления. * Улучшение оптимизации за счет выбора альтернативных команд, и переупорядочивания последовательных коммутирующих действий.

Благодарю за внимание. Благодарю за внимание.