попались

Sep 21, 2015 18:57

Любопытная новость: в Америке агентство по защите окружающей среды поймало "Фольксваген" на том, что они ставили в дизельные машины специальную программу. Эта программа определяла, когда машина проходит тест выхлопа (следила за работой двигателя, положением руля, итд.), и тогда включала режим очистки на максимум. А при обычной езде режим другой, и ( Read more... )

экономика

Leave a comment

_winnie September 21 2015, 16:07:18 UTC
В случае с Intel - это может быть более доброкачественной ситуацией вида "мы не можем отвечать за то, что наша хитрая оптимизация под хаки и особенности нашего процессора - не даст обратного эффекта на чужом процессоре"

Есть более тёмная история из IT - драйвера NVidia/ATI были пойманы на том, что искусственно оптимизировались под особенности бенчмарков, (без пользы для остальных игрушек)

Прямо сейчас - на виду истории вида "соцсеть Foogram.com запретила ссылки на Kontbook.com"

Reply

vladimir000 September 21 2015, 16:15:16 UTC
> "мы не можем отвечать за то, что наша хитрая оптимизация под хаки и особенности нашего процессора - не даст обратного эффекта на чужом процессоре"

Нормальный способ решения этой проблемы - ключ кмпилятора "оптимизировать под такую-то версию процессора", ИМНО.

Reply

green_fr September 21 2015, 16:20:00 UTC
То есть писать бесконечные if для разных версий процессоров. Можно назвать инженеров из Intel ленивыми людьми, которые ограничились первым if'ом.

Reply

vladimir000 September 21 2015, 16:23:34 UTC
Даже если ограничиться первым if'ом, он должен проверять не реальный процессор машины (может, это вообще виртуалка под альфой двадцатилетней давности:), а ключ компилятора.

Reply

meshko September 21 2015, 16:42:12 UTC
Инструкции с процессор не суют абы как. Придумывают спцификацию, делают instruction set. И каждый процессор его либо поддерживает, либо нет. Компилятор должен оптимизировать под instruction set, который данный процессор декларирует как поддерживаемый. Если что-то не работает, это проблема процессора, а не компилятора (при условии, что код сгенеирован правильно, разумеется).
Проблема в том, что Intel решил смотреть не на поддерживаемый instruction set, а на вендора процессора. Разумеется, производители компилятора имеют право это делать -- зачем им тратить кучу времени на тестирование на AMD, если ясно и известно, что, скажем, 90% пользователей пользуются Intel.
Проблема только в том, что в данном случае компиялтор делает та же фирма, что и процессор, вот и выходит нехорошо.

Reply

_winnie September 21 2015, 17:01:12 UTC
Наличие специальной инструкции процессора ещё не гарантирует, что она работает быстрее чем комбинация неспециальных инструкций. Я слышал много историй вида "да, на этой версии чипа SSE4 формально поддерживается, но лучше генерить код под SSE3".

Опции компилятора "используй такой-то instruction set" вместо "используй runtime-детектирование" - в ICC наличии.

Reply

b0p0h0k September 21 2015, 16:45:30 UTC
Отмазка не катит.
Компилятор не имеет права предполагать, что построенный код будет выполняться на том же самом CPU, что и компилятор.
Так что, да, только ключами компилятора это должно управляться.

Reply

meshko September 21 2015, 17:03:55 UTC
эта проверка runtime

Reply

huzhepidarasa September 21 2015, 19:06:52 UTC
Нет, это не она. В рантайм такую проверку просто некуда вставить.

Upd нет, вроде таки в рантайме. Пойду разберусь.

Reply

meshko September 21 2015, 19:13:25 UTC
Что значит некуда? Вот туда где оно решает, какой instruction set использовать, вот туда и вставить.
http://www.linuxjournal.com/node/4885/print

Reply

b0p0h0k September 21 2015, 19:26:36 UTC
Тогда другое дело.
Но это идёт вразрез с тем, что сказал ТС:...компилятор выдает особо оптимизированный код, только когда его запускают на процессоре Интела, а на AMD генерирует код помедленней.

Reply

avva September 21 2015, 19:39:52 UTC
По-видимому, это я ошибся.

Reply

dibr September 21 2015, 17:17:24 UTC
> Отмазка не катит.
> Компилятор не имеет права предполагать, что построенный код будет выполняться на том же самом CPU, что и компилятор.

Тут вообще получается, что тормозить будут программы, которые компилировались на АМД, то есть от АМД будут отказываться только разработчики, а не пользователи. А что-то мне кажется, что у разработчиков и так в основном не АМД...

Reply

gegmopo4 September 21 2015, 19:17:11 UTC
Имеет при -march=native.

Reply

liddaged September 21 2015, 17:36:24 UTC
На самом деле, и nvidia и radeon не прекратили оптимизировать под бенчмарки - более того, они много лет уже оптимизируют под популярные игрушки, особенно под те которые сайты используют в бенчмарках. Можно сказать - так и надо, иначе нельзя, конкурент подлый ведь делает, а мы будем выглядеть плохо. И пользователи вот этих конкретных игр выигрывают. И всем остальным вроде не мешает. Так что так и надо.

Reply

_winnie September 21 2015, 17:40:00 UTC
Оптимизация под популярные игры - это замечательно.

А вот "мы знаем, что на 20-й секунде бенчмарка можно не рисовать спрятанное за холмом" - бесполезная и вредная деятельность.

Reply


Leave a comment

Up