Галид (язык программирования)
Эта статья нуждается в дополнительных цитатах для проверки . ( март 2018 г. ) |
Парадигмы | функциональный , параллельный |
---|---|
Разработано | Джонатан Рэган-Келли Эндрю Адамс |
Разработчик | MIT (при помощи Стэнфорда , Google , Adobe ) |
Впервые появился | 2012 год |
Дисциплина набора текста | статический |
Язык реализации | С++ |
ТЫ | macOS , основные Linux дистрибутивы , Windows |
Веб-сайт | галоидный длинный |
Halide — это язык компьютерного программирования, предназначенный для написания кода обработки цифровых изображений , который использует преимущества локальности памяти , векторизованных вычислений и многоядерных центральных процессоров (ЦП) и графических процессоров (ГП). [1] Halide реализован как внутренний предметно-ориентированный язык (DSL) в C++ .
Язык
[ редактировать ]Главным нововведением Halide является отделение алгоритма реализуемого от расписания его выполнения , т.е. кода, определяющего циклов вложение , распараллеливание , развертывание цикла и векторные инструкции . Эти два алгоритма обычно чередуются вместе, и экспериментирование с изменением расписания требует от программиста переписывать большие части алгоритма при каждом изменении. С помощью Halide изменение расписания не требует каких-либо изменений в алгоритме, что позволяет программисту экспериментировать с планированием и находить наиболее эффективное.
Пример исходного кода
[ редактировать ]Следующая функция определяет и устанавливает расписание для коробчатого фильтра 3×3 , определяемого как серия из двух проходов 3×1:
Func blur_3x3(Func input) {
Func blur_x, blur_y;
Var x, y, xi, yi;
// The algorithm - no storage or order
blur_x(x, y) = (input(x-1, y) + input(x, y) + input(x+1, y))/3;
blur_y(x, y) = (blur_x(x, y-1) + blur_x(x, y) + blur_x(x, y+1))/3;
// The schedule - defines order, locality; implies storage
blur_y.tile(x, y, xi, yi, 256, 32)
.vectorize(xi, 8).parallel(y);
blur_x.compute_at(blur_y, x).vectorize(x, 8);
return blur_y;
}
Использовать
[ редактировать ]Google использовал Halide и TensorFlow для своего Pixel 2 Pixel Visual Core . [2] Adobe Photoshop также использует Halide. [3] И Google, и Adobe принимали участие в исследовании Halide. [4]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Halide: новый язык обработки изображений» . 2012 . Проверено 20 сентября 2013 г.
- ^ «Google и Intel готовят ИИ-чипы, обменники нейронными сетями и многое другое» . Регистр . Ситуация Издательство.
- ^ «Фотошоп зависает при запуске из-за узких мест Halide» . 2020 . Проверено 27 апреля 2020 г.
- ^ «Учимся оптимизировать галоид с помощью поиска по дереву и случайных программ» (PDF) . 2019 . Проверено 1 июля 2019 г.