Здравствуйте, WolfHound, Вы писали:
WH>1)Откуда дрова?
Дрова про OpenCV? Я сам тестировал и разработчики выкладывают тесты:
здесь и
здесь. После этого неудачного опыта был написан OpenVINO, потому что Интелу позарез нужен быстрый инференс сетей на своих CPU.
Про TensorFlow было в новостях, что Halide использовали для Pixel 2 в Pixel Visual Core. Дальше Halide не продвинулся.
WH>2)Описываемые сценарии выглядят как оптимизация одной простой функции, на которую ни каких ресурсов не жалко.
WH>Если же у тебя сотни сложных функций которые должны быстро работать на нескольких разных железках то ситуация резко меняется.
Меняется, да не меняется. Что используют прикладные программисты? Они используют оптимизированные библиотеки от производителей железа, занимаются не низкоуровневой оптимизацией, а оптимизируют алгоритмы. MKL, cuDNN, clDNN, ArrayFire и куча других, сейчас появляется на свет OpenVX — что ещё надо? Кажется, что универсальных программистов становится всё меньше: одни занимаются оптимизацией, а другие алгоритмами. Halide больше про то, чтобы всё смешать.
WH>3)Если не halide то что? Возможно у него не самая лучшая реализация. Но я, честно говоря, не вижу вычислительную модель, которая лучше подходит для таких задач.
Тут вопрос, нужна ли она вообще? Я вживую посмотрел, как пишутся оптимизированные алгоритмы в железных конторах: они знают, что для конкретно этой модели, скажем, видеокарты можно использовать конкретно эти операции. Знают они от ребят из соседнего отдела, которые занимаются компилятором или разработкой железки. И больше никто об этом не знает. Поэтому алгоритмы пишутся очень выборочно, нет одного универсального и оптимизированного даже для линейки устройств. Конкретно в OpenCL, иногда конструкция min(max( x, minval), maxval) может отработать быстрее, чем специализированная clamp. Почему? А хз, но на некоторых устройствах так бывает, до этого хрен додумаешься, если бы не инсайды. Или может помочь знание, что для видеокарт АМД есть расширенные функции типа amd_qsad, которые работают очень быстро и некоторые алгоритмы можно ускорить в 2-4 раза, если их использовать. При этом алгоритмы ещё и упрощаются. Как Halide может до такого додуматься — хз. Но разработчики от производителя железа знают и хрен ты обгонишь их специализированные библиотеки.