WikiDer > Halide (язык программирования)
эта статья нужны дополнительные цитаты для проверка. (Март 2018 г.) (Узнайте, как и когда удалить этот шаблон сообщения) |
Парадигма | функциональный, параллельно |
---|---|
Разработано | Джонатан Рэган-Келли и Эндрю Адамс |
Разработчик | Массачусетский технологический институт, (с помощью Стэнфорд и Adobe) |
Впервые появился | 2012 |
Печатная дисциплина | статический |
Язык реализации | C ++ |
Операционные системы | Mac OS X (от 10.6 до 10.8), основные дистрибутивы Linux, Windows |
Интернет сайт | http://halide-lang.org/ |
Галогенид это компьютер язык программирования предназначен для письма цифровая обработка изображений код, который использует преимущества место в памяти, векторизованные вычисления и многоядерные Процессоры и GPU.[1] Галогенид реализован как внутренний предметно-ориентированный язык (DSL) в C ++.
Язык
Основное нововведение Halide - это разделение алгоритм реализуется из график исполнения, т.е. код, определяющий петля гнездование, распараллеливание, разворачивание петли и векторная инструкция. Эти два обычно чередуются вместе, и экспериментирование с изменением расписания требует от программиста переписывать большие части алгоритма при каждом изменении. В Halide изменение расписания не требует каких-либо изменений в алгоритме, и это позволяет программисту экспериментировать с расписанием и находить наиболее эффективный.
Пример исходного кода
Следующая функция определяет и устанавливает расписание для 3 × 3 коробчатый фильтр определяется как серия из двух проходов 3 × 1:
Func blur_3x3(Func ввод) { Func blur_x, blur_y; Вар Икс, у, xi, йи; // Алгоритм - без хранения и порядка blur_x(Икс, у) = (ввод(Икс-1, у) + ввод(Икс, у) + ввод(Икс+1, у))/3; blur_y(Икс, у) = (blur_x(Икс, у-1) + blur_x(Икс, у) + blur_x(Икс, у+1))/3; // Расписание - определяет порядок, населенный пункт; подразумевает хранение blur_y.плитка(Икс, у, xi, йи, 256, 32) .векторизовать(xi, 8).параллельно(у); blur_x.compute_at(blur_y, Икс).векторизовать(Икс, 8); вернуть blur_y;}
Использовать
Google использовал Halide и TensorFlow для своего Pixel 2 Пиксельное визуальное ядро.[2] Adobe Photoshop также использует Halide.[3] И Google, и Adobe принимали участие в исследовании Halide.[4]
Смотрите также
использованная литература
- ^ «Галид - новый язык обработки изображений». 2012. Получено 20 сентября 2013.
- ^ «Google и Intel готовят микросхемы искусственного интеллекта, обмен нейронными сетями и многое другое». Реестр. Публикация ситуации.
- ^ "Photoshop зависает при запуске на узких местах Halide". 2020. Получено 27 апреля 2020.
- ^ «Обучение оптимизации Halide с помощью поиска по дереву и случайных программ» (PDF). 2019. Получено 1 июля 2019.