Здесь есть еще один момент, не упомянутый ни в статье ни в комментариях. Это — место размещения неугодной компаниям\государству информации. Понятно, что как во всех государственных СМИ, так и на официальных ресурсах компаний странно ждать хотя бы одной слегка негативной детальки — там всё сверкает и сияет, так по уставу положено. Но есть масса негосударственных (специально не пишу "независимых") СМИ, и там правду можно поискать. А в случае компаний — всё гораздо хуже — их PR хочет контролировать то, что фактически им не принадлежит — сторонние публикации. И если начинать с этим бороться, то именно с этой стороны — издалека. Как пример — сначала организовать "утечки информации без разглашения источника", а потом — расширять рамки дозволенного.
Тут есть два момента — во-первых, к uncanny valley имеет отношение только создание аватаров -клонов, а это только одна из частей проекта. Всё остальное — не про это. А во-вторых, для того, чтобы выбраться из valley, можно отдать полученные автоматом модели на редактирование профессиональным художникам — на это уйдет на порядок меньше времени и денег, чем на создание с нуля. Ну и наконец, поправка на время.
Тот счастливый случай, когда знаешь, что среди миллиона строк кода есть несколько десятков твоих и можешь поздравить OpenCV с днем рождения с полным правом. Happy Birthday, OpenCV!
Моя история получилась короткая, на пост из четырех частей не тянет, но мне было весело.
— Здравствуйте, Виктория Григорьевна, на связи старший сотрудник безопасности Сбербанка. Дмитрий (Фамилия).
--Здравствуйте.
— С вашего счета сегодня был совершен перевод на 7123р на имя Анатолия Барунова. Скажите, это вы сделали перевод?
— Да, я! (в реальности я не знаю никаких Анатолиев, и знаю, что такого перевода не было).
— (Пауза) А можно узнать, когда именно был сделан перевод?
— Боюсь, нет. Это будет разглашение личной информации.
— Но у нас есть информация о компрометации вашего аккаунта. А можно узнать назначение перевода данной суммы?
— Пожалуй, да. Анатолий — божественен в постели. Я очень боюсь его потерять и сразу после каждой нашей интимной встречи перевожу ему на счет определенную сумму. Поэтому и не могу сказать точное время перевода, Вы же понимаете.
— (Пауза). Скажите, а зачем вы меня обманываете?
— А откуда Вы знаете, что я вас обманываю? Неужели вы тоже спите с Анатолием???!!!
Вы правы, но мы очень старались это учитывать. Под компаниями тут имеются в виду не монстры индустрии — они обычно покупают технику Intel самостоятельно и в больших количествах, а небольшие компании — не более десятка работников, у которых каждый девайс на счету. Кроме того, в числе победителей есть и индивидуалы.
Я согласна, что сравнивать идею и готовое решение — не совсем справедливо. Но в идею тоже можно вложить много труда — провести исследования, очень точно и подробно описать, что и как можно сделать. Но, к сожалению, таких заявок от конкурсантов не нашлось.
В CM векторы могут иметь произвольную длину, а также существуют матрицы и поверхности. Это значительно влияет на производительность и возможности для целого ряда алгоритмов. Кроме того, в CM вся обработка — векторная, а в OpenCL это векторные фрагменты — именно о них можно думать как о векторных intinsic вставках в скалярный код.
А это он и есть. То, что приведено выше (если поменять размеры матрицы на 16х16), работает в 8 раз быстрее реализации OpenCL. C 8x8 просто никто не мерил :)
Исходников OpenCL у меня нет, но их легко найти. Исходники ICM для матрицы 8х8 — можно посмотреть в примере gaussian_blur_test из ICM пакета. Там нет абсолютно никаких хитростей — все очень просто и наивно.
matrix<uint, 8, 8> out;
for( int i = 0; i < height; i += 8 ) {
read( INBUF, id * 32, i, in );
out.row(0) = in.column(0);
out.row(1) = in.column(1);
out.row(2) = in.column(2);
out.row(3) = in.column(3);
out.row(4) = in.column(4);
out.row(5) = in.column(5);
out.row(6) = in.column(6);
out.row(7) = in.column(7);
write( OUTBUF, i * 4, id * 8, out );</source>
Задача — транспонирование матрицы :)) Но вообще — в посте описано как потратив около 10 минут времени запустить на вашей системе уже реализованный пример, например, линейного фильтра (или еще десяток варантов), увидеть скорость его работы и сравнить с самой эффективной реализацией OpenCL.
Спасибо, что нашли опечатку. Я не заметила :( Конечно же, значения не битовые, а байтовые. Поправила… И я честно пишу, что это максимальный эффект — когда происходит изменение порядка данных.
Если всё очень сильно упростить (на порядок), то да. Что мешает? Мешает архитектура OpenCL, явно созданная для скалярной работы by design. Хотя появление расширений там неизбежно, скорость нужна всем.
Я вам открою секрет. В Intel — достаточно инженеров для разных задач. Ну и еще один секрет не открою, а повторю — скопирую из текста поста — «Много лет ICM использовался внутри Intel в разработке продуктов для обработки медиа на Intel GPU»
Тут два момента, явно отмеченных в статье. Первый — OpenCL — не векторный по своей природе. Компилятор пытается его векторизовать внутри, но никакая автовекторизация по эффективности не может сравниться с ручной, которая лежит в основе C for Metal. Но главное — OpenCL работает с элементами поэлементно (хотя там и есть векторы фиксированной длины и рабочие группы, но это не сильно меняет дело), а в основе C for Metal — именно работа с группой элементов, причем, нефиксированного размера). Именно поэтому такой выигрыш именно в транспонировании — любом переупорядочивании этих элементов.
Вы задаете отличный вопрос… для тех, кто не читал этот пост. Для тех, кто читал, увы — ответ в посте есть. Честное интеловское :) К нему можно добавить, что да — производительность OpenCL постоянно улучшается, да и oneAPI виден на горизонте. C for Metal нисколько этим усилиям не противоречит.
Здесь есть еще один момент, не упомянутый ни в статье ни в комментариях. Это — место размещения неугодной компаниям\государству информации. Понятно, что как во всех государственных СМИ, так и на официальных ресурсах компаний странно ждать хотя бы одной слегка негативной детальки — там всё сверкает и сияет, так по уставу положено. Но есть масса негосударственных (специально не пишу "независимых") СМИ, и там правду можно поискать. А в случае компаний — всё гораздо хуже — их PR хочет контролировать то, что фактически им не принадлежит — сторонние публикации. И если начинать с этим бороться, то именно с этой стороны — издалека. Как пример — сначала организовать "утечки информации без разглашения источника", а потом — расширять рамки дозволенного.
На Архитектурных Днях говорят обычно про архитектуру, не про цены :) Для цен еще будут мероприятия. Да и без сравнений не обойдется, stay tuned.
Да, хотя нам самим иногда не верится.
Не совсем всё другое. Но даже если и да, то интересно, откуда у этого другого корни растут
Тут есть два момента — во-первых, к uncanny valley имеет отношение только создание аватаров -клонов, а это только одна из частей проекта. Всё остальное — не про это. А во-вторых, для того, чтобы выбраться из valley, можно отдать полученные автоматом модели на редактирование профессиональным художникам — на это уйдет на порядок меньше времени и денег, чем на создание с нуля. Ну и наконец, поправка на время.
Тот счастливый случай, когда знаешь, что среди миллиона строк кода есть несколько десятков твоих и можешь поздравить OpenCV с днем рождения с полным правом. Happy Birthday, OpenCV!
Это — тема отдельного поста. Если интересно, то вот — отличная лекция по OpenCL, SYCL and DPC++ на русском
Моя история получилась короткая, на пост из четырех частей не тянет, но мне было весело.
— Здравствуйте, Виктория Григорьевна, на связи старший сотрудник безопасности Сбербанка. Дмитрий (Фамилия).
--Здравствуйте.
— С вашего счета сегодня был совершен перевод на 7123р на имя Анатолия Барунова. Скажите, это вы сделали перевод?
— Да, я! (в реальности я не знаю никаких Анатолиев, и знаю, что такого перевода не было).
— (Пауза) А можно узнать, когда именно был сделан перевод?
— Боюсь, нет. Это будет разглашение личной информации.
— Но у нас есть информация о компрометации вашего аккаунта. А можно узнать назначение перевода данной суммы?
— Пожалуй, да. Анатолий — божественен в постели. Я очень боюсь его потерять и сразу после каждой нашей интимной встречи перевожу ему на счет определенную сумму. Поэтому и не могу сказать точное время перевода, Вы же понимаете.
— (Пауза). Скажите, а зачем вы меня обманываете?
— А откуда Вы знаете, что я вас обманываю? Неужели вы тоже спите с Анатолием???!!!
Все заявки были получены, изучены и обсуждены. В том числе и ваша.
Да, на будущее нам стОит посылать уведомление о получении. Спасибо!
Вы правы, но мы очень старались это учитывать. Под компаниями тут имеются в виду не монстры индустрии — они обычно покупают технику Intel самостоятельно и в больших количествах, а небольшие компании — не более десятка работников, у которых каждый девайс на счету. Кроме того, в числе победителей есть и индивидуалы.
По условиям в конкурсе могли участвовать не только индивидуалы, но и компании.
Я согласна, что сравнивать идею и готовое решение — не совсем справедливо. Но в идею тоже можно вложить много труда — провести исследования, очень точно и подробно описать, что и как можно сделать. Но, к сожалению, таких заявок от конкурсантов не нашлось.
В CM векторы могут иметь произвольную длину, а также существуют матрицы и поверхности. Это значительно влияет на производительность и возможности для целого ряда алгоритмов. Кроме того, в CM вся обработка — векторная, а в OpenCL это векторные фрагменты — именно о них можно думать как о векторных intinsic вставках в скалярный код.
А это он и есть. То, что приведено выше (если поменять размеры матрицы на 16х16), работает в 8 раз быстрее реализации OpenCL. C 8x8 просто никто не мерил :)
Исходников OpenCL у меня нет, но их легко найти. Исходники ICM для матрицы 8х8 — можно посмотреть в примере gaussian_blur_test из ICM пакета. Там нет абсолютно никаких хитростей — все очень просто и наивно.