ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ «ЭЛЬБРУС» Оптимизирующий компилятор Распараллеливание вычислений
Оптимизирующий компилятор обеспечивает высокую эфективность распараллеливания вычислений. Граф, текст и коды из-под оптимизирующего компилятора для задачи li
Архитектура микропроцессора
«Эльбрус» предоставляет большой набор параллельных устройств исполнения и средства
управления параллельным
запуском операций. Максимальное
использование параллелизма архитектуры микропроцессора «Эльбрус» обеспечивается с помощью оптимизирующего компилятора.
В компиляторе реализованы
самые современные и уникальные методы анализа и распараллеливания программ
на уровне отдельных операций, а также на уровне потоков управления.
Возможности компилятора демонстрируются на примере распараллеливания функции sweep из интерпретатора Лиспа.
После анализа и преобразования
сложной структуры управления и зависимостей между операциями основного
цикла функции sweep компилятор
выявляет возможный параллелизм, используя для этого представление программы
в виде графа. Затем за счет конвейеризации он планирует
цикл в 3 широкие команды
архитектуры «Эльбрус», позволяя выполнить в среднем свыше 12 операций за один машинный такт и достичь
предельного количества
слогов в широкой команде,
равного 16-ти.
Исходный
код
функции sweep
из
интерпретатора
Лиспа
на языке C
Фрагмент параллельного представления
в виде графа в компиляторе
для основного
цикла функции
sweep
(операции представлены узлами, а зависимости – дугами графа).
Параллельный код основного цикла функции sweep. Каждая строка соответствует одной широкой команде, состоящей из слогов-операций, одна из команд достигает предела в 16 слогов. Каждая итерация цикла выполняется за 3 машинных такта, параллелизм достигает 15 операций за один такт
Оптимизирующий компилятор позвояет достигать предельной производительности при использовании параллельных аппаратных ресурсов. Граф, текст и коды из-под оптимизирующего компилятора для задачи ijpeg
Вверху представлен исходный код основного цикла задачи просмотра изображений (ijpeg)
Оптимизирующий компилятор успешно распараллеливает как вещественные, так и целочисленные приложения. Это показано на примере основного цикла целочисленной задачи просмотра изображений ijpeg. После анализа зависимостей на одной итерации и между итерациями цикла компилятор распараллеливает и конвейеризирует цикл, планируя его в 15 широких команд архитектуры «Эльбрус», которые содержат 140 операций
Фрагмент параллельного представления в виде графа
в компиляторе для основного цикла задачи ijpeg
(операции представлены узлами,
а зависимости – дугами графа)
Параллельный код основного цикла задачи ijpeg. Каждая строка соответствует одной широкой команде, состоящей из слогов-операций, 4 команды достигают предела в 16 слогов.
Каждая итерация цикла выполняет 140 операций за 15 машинных тактов
 |
|
Tel: +7 (495) 363-9665 | Fax: +7 (495) 363-9599 | E-mail:
|
|