Pull to refresh
5
32
Пётр Чекмарёв@4ekmah

Senior Software Engineer

Send message

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

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

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

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

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

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

Information

Rating
224-th
Works in
Registered
Activity

Specialization

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