Проект Minotaur развивает оптимизатор векторных инструкций для LLVM

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3258
Зарегистрирован: 20.08.2022

#

Проект Minotaur развивает оптимизатор векторных инструкций для LLVM
Дата публикации:Sun, 16 Jul 2023 10:02:56 +0300




Группа исследователей из университета Юты (США) предложила оптимизатор Minotaur для набора компиляторов LLVM, использующий метод на основе решения задач выполнимости формул (SMT Solver) для выявления недостающих оптимизаций в промежуточном представлении кода (LLVM IR), генерируемом оптимизатором LLVM. Minotaur главным образом нацелен на оптимизацию целочисленных векторных инструкций (SIMD), как переносимых, так и специфичных для систем x86_64 (SSE, AVX, AVX2 и AVX-512).




В качестве векторизатора задействована библиотека Alive2, модифицированная для синтеза и поддержки векторных инструкций, используемых на системах x86_64. Разработка продолжает развитие проекта Souper, разрабатывавшегося теми же авторами. Minotaur может находить различные оптимизации применения векторных инструкций, пропущенные штатным оптимизатором LLVM. При тестировании дополнительно оптимизированного кода библиотеки libYUV на системе с CPU Intel Cascade Lake зафиксировано максимальное повышение производительности в 1.64 раза, но в средним ускорение составило 2.2%. При тестировании набора SPEC CPU2017 ускорение составило 1.3%.
Изображение


Пример оптимизации для Си-кода:

do {
if (*--p == '.') *p = '_';
} while (p != name);



Для операции сравнения штатный оптимизатор LLVM сгенерирует биткод для использования инструкций AVX-2:

%1 = shufflevector %0, <31, 30, 29, ... , 0>
%2 = icmp eq %1, <46, 46, 46, ... , 46>
%3 = shufflevector %2, <31, 30, 29, ... , 0>



Minotaur исключит лишние операции shufflevector и сведёт код к одному вызову операции icmp, которая также выполняет сравнение регистра с символом "." (ASCII-код 46), но без лишней реверсии вектора:

%1 = icmp eq %0, <46, 46, 46, ... , 46>





Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=59447

Жизнь за Нер'зула!

Ответить