Любопытная новость: в Америке агентство по защите окружающей среды поймало "Фольксваген" на том, что они ставили в дизельные машины специальную программу. Эта программа определяла, когда машина проходит тест выхлопа (следила за работой двигателя, положением руля, итд.), и тогда включала режим очистки на максимум. А при обычной езде режим другой, и уровень загрязнения превышает разрешенный в 40 раз.
Теперь их обязали заменить 500 тысяч проданных за последние 7 лет автомобилей нескольких марок, и еще видимо оштрафуют на какие-то миллиарды.
Подробности напр. в: "Репутация Volkswagen задымилась".
ygam напомнил в одном из обсуждений, что это похоже на историю пятилетней давности уже из компьютерной индустрии. Тогда Интел поймали на том, что их компилятор выдает особо оптимизированный код, только когда его запускают на процессоре Интела, а на AMD генерирует код помедленней. То есть так: он смотрит на прошитое в процессоре имя вендора, и если это GenuineIntel, то делает всякие разные оптимизации в зависимости от того, что CPU реально поддерживает. А если нет, он никаких оптимизаций не делает, и для нового AMD выдает такой же код, как для древнего Pentium III.
Причем любопытно, что это так и не изменилось с тех пор. Вроде бы Интел заставили заплатить штраф и документировать это поведение компилятора, но он продолжает так себя вести. Год назад в реддите было обсуждение, и кто-то залез в свежую версию компилятора и проверил:

(это код, который ищет фразу GenuineIntel, и в зависимости от того, находит или нет, продолжает запускать разные процедуры оптимизации; если не находит, то оптимизации реально никакой нет)
Теперь их обязали заменить 500 тысяч проданных за последние 7 лет автомобилей нескольких марок, и еще видимо оштрафуют на какие-то миллиарды.
Подробности напр. в: "Репутация Volkswagen задымилась".
Причем любопытно, что это так и не изменилось с тех пор. Вроде бы Интел заставили заплатить штраф и документировать это поведение компилятора, но он продолжает так себя вести. Год назад в реддите было обсуждение, и кто-то залез в свежую версию компилятора и проверил:

(это код, который ищет фразу GenuineIntel, и в зависимости от того, находит или нет, продолжает запускать разные процедуры оптимизации; если не находит, то оптимизации реально никакой нет)
no subject
Date: 2015-09-21 04:07 pm (UTC)Есть более тёмная история из IT - драйвера NVidia/ATI были пойманы на том, что искусственно оптимизировались под особенности бенчмарков, (без пользы для остальных игрушек)
Прямо сейчас - на виду истории вида "соцсеть Foogram.com запретила ссылки на Kontbook.com"
no subject
Date: 2015-09-21 04:15 pm (UTC)Нормальный способ решения этой проблемы - ключ кмпилятора "оптимизировать под такую-то версию процессора", ИМНО.
no subject
Date: 2015-09-21 04:20 pm (UTC)no subject
Date: 2015-09-21 04:23 pm (UTC)no subject
Date: 2015-09-21 04:41 pm (UTC)Вот тут, например: http://www.anandtech.com/show/7384/state-of-cheating-in-android-benchmarks
no subject
Date: 2015-09-21 04:41 pm (UTC)Нет. Компилятор проверяет процессор, на котором работает сам компилятор. И ещё не известно, на каком процессоре будет потом запускаться скомпилированная программа. Вот если бы проверка типа процессора шла в рантайме, тогда ваше замечание имело бы смысл.
no subject
Date: 2015-09-21 04:42 pm (UTC)Проблема в том, что Intel решил смотреть не на поддерживаемый instruction set, а на вендора процессора. Разумеется, производители компилятора имеют право это делать -- зачем им тратить кучу времени на тестирование на AMD, если ясно и известно, что, скажем, 90% пользователей пользуются Intel.
Проблема только в том, что в данном случае компиялтор делает та же фирма, что и процессор, вот и выходит нехорошо.
no subject
Date: 2015-09-21 04:45 pm (UTC)Слава богу это в прошлом, сейчас принято каждую фичу отдельно проверять (feature detection vs browser detection). Ну и браузеров и их версий расплодилось столько, что всех не проверишь.
no subject
Date: 2015-09-21 04:45 pm (UTC)Компилятор не имеет права предполагать, что построенный код будет выполняться на том же самом CPU, что и компилятор.
Так что, да, только ключами компилятора это должно управляться.
no subject
Date: 2015-09-21 04:46 pm (UTC)Fuck the system!
no subject
Date: 2015-09-21 04:50 pm (UTC)УмнО
no subject
Date: 2015-09-21 04:52 pm (UTC)Вроде как "тест на выхлоп" проводится вставлением специального прибора в выхлопную трубу, никак не могу вообразить, что можно как-то этот момент особо отследить, без наделения жестяного глушителями свойствами искусственного интеллекта.
no subject
Date: 2015-09-21 04:54 pm (UTC)no subject
Date: 2015-09-21 04:55 pm (UTC)Вобще то по идее выхлоп мерят на холостых. Чем там можно играть чтобы выхлоп уменьшать на мощности? На холостом стгит датчик кислорода и подбирает бедную смесь. А что можно менять на ходу, так чтоб за счет загрязнения иметь прирост мощности я не знаю. Угол зажигания чтоль или фазы газораспределения, так они ремнем грм задаютмя не порегулируеш.
no subject
Date: 2015-09-21 04:56 pm (UTC)Холостой ход оптимизиоовать это не проблема. А вот на мощности - это потеря мощности и динамтки авты.
no subject
Date: 2015-09-21 05:01 pm (UTC)Опции компилятора "используй такой-то instruction set" вместо "используй runtime-детектирование" - в ICC наличии.
no subject
Date: 2015-09-21 05:03 pm (UTC)no subject
Date: 2015-09-21 05:07 pm (UTC)А на мотоциклы ставят клапан который меняет режтм глушителя с тихого на громкий
Бошам стоит эту фичу, включение режима неэкологичного, отдать на чиптюнинг
no subject
Date: 2015-09-21 05:10 pm (UTC)У большинства современных машин компьютер проверяет давление в шинах, как передних, так и задних. Если есть возможность читать давление, то наверняка есть возможность проверять кутятся колеса или стоят на месте.
Я не знаю, как оно на самом деле работает, но первое, что приходит в голову - это узнавать ситуацию, когда передние (ведущие) колеса "едут", а задние нет.
no subject
Date: 2015-09-21 05:12 pm (UTC)Когда авто едет - там оптимизация более тонкая и неоднозначная, неизбежны трэйд-оффс и проч.
Суть претензий к колбасникам формулируется не так, "что холостой ход пере-оптимизировали, а нехолостой - недо-оптимизировали", а в том что "жулили только когда атомобиль проходил тест выхлопа". Мой вопрос, как сумрачный тевтонский гений различал "холостой ход" от "холостого хода при проведении теста"?
Если "государственный измеритель выхлопа" измеряет выхлоп на холостом ходу - это скорее проблема государственного измерителя, нес па?
no subject
Date: 2015-09-21 05:13 pm (UTC)2. Раз "компилятор выдаёт особо оптимизированный код [...] в зависимости от того, что CPU реально поддерживает", значит речь идёт не о коммерческой разработке ПО (разработчику важно чтобы его программа работала на процессоре заказчика/потребителя, а не на его собственном, а программа, идеально оптимизированная под особенности одного процессора может вообще не заработать на другом похожем), а о ситуации "написали программу, тут же и запустили" (какие-нибудь научные расчёты с самописными программами например). А это во-первых не такое уж частое применение, а во-вторых - пусть АМД выкатят свой компилятор, оптимизированный под АМД, и проблема решится (или станет симметричной).
no subject
Date: 2015-09-21 05:16 pm (UTC)no subject
Date: 2015-09-21 05:17 pm (UTC)> Компилятор не имеет права предполагать, что построенный код будет выполняться на том же самом CPU, что и компилятор.
Тут вообще получается, что тормозить будут программы, которые компилировались на АМД, то есть от АМД будут отказываться только разработчики, а не пользователи. А что-то мне кажется, что у разработчиков и так в основном не АМД...
no subject
Date: 2015-09-21 05:19 pm (UTC)no subject
Date: 2015-09-21 05:23 pm (UTC)