Обновить
5
28
Пётр Чекмарёв@4ekmah

Senior Software Engineer

Отправить сообщение

Halide классный проект, мы оттуда брали некоторые идеи для ядер loopslayers. И он, безусловно, лучше в том, что он работает с GPU, а также в том, что для относительно простых случаев он куда более минималистичный.

Но сам принцип halide иной. Там вы пишете внутренний цикл, причем записываете его попиксельной формулой, предоставляя halide возможность эффективно её развернуть под CPU или GPU. И тут мы полагаемся на его автовекторизатор, что не может гарантировать оптимального результата на сложных ядрах. И, по мне, это ограничивает область применения в сравнении с loops, на котором вы все циклы пишете явно и все хвосты обрабатываете явно, что позволяет вам самостоятельно управлять схемой векторизации. Или вообще писать код не для обработки больших массивов.

Но я согласен, нащупать ту грань, где halide уже не справляется столь хорошо, как подготовленный ассемблерист/программист на интринзиках - это полезное упражнение, подумать над сравнением имеет смысл.

Теперь как руки дойдут до JIT, буду знать, куда смотреть.

Надеюсь, будет полезным источником информации.

Насчёт SSE - в перспектве не вижу причин, чтобы не добавить поддержку, более того, есть намётки откуда взять код для условного lowering'а, но пока, скорее наоборот, более современные расширения в приоритете, так что вряд ли стоит ждать раньше 2027-го.

Информация

В рейтинге
243-й
Зарегистрирован
Активность

Специализация

Десктоп разработчик
Старший
От 600 000 ₽
C++
Оптимизация кода
Компиляторы
Assembler
OpenCV
САПР
Нейронные сети
Базы данных
Функциональное программирование