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

Теперь их обязали заменить 500 тысяч проданных за последние 7 лет автомобилей нескольких марок, и еще видимо оштрафуют на какие-то миллиарды.

Подробности напр. в: "Репутация Volkswagen задымилась".

[livejournal.com profile] ygam напомнил в одном из обсуждений, что это похоже на историю пятилетней давности уже из компьютерной индустрии. Тогда Интел поймали на том, что их компилятор выдает особо оптимизированный код, только когда его запускают на процессоре Интела, а на AMD генерирует код помедленней. То есть так: он смотрит на прошитое в процессоре имя вендора, и если это GenuineIntel, то делает всякие разные оптимизации в зависимости от того, что CPU реально поддерживает. А если нет, он никаких оптимизаций не делает, и для нового AMD выдает такой же код, как для древнего Pentium III.

Причем любопытно, что это так и не изменилось с тех пор. Вроде бы Интел заставили заплатить штраф и документировать это поведение компилятора, но он продолжает так себя вести. Год назад в реддите было обсуждение, и кто-то залез в свежую версию компилятора и проверил:



(это код, который ищет фразу GenuineIntel, и в зависимости от того, находит или нет, продолжает запускать разные процедуры оптимизации; если не находит, то оптимизации реально никакой нет)
Page 1 of 5 << [1] [2] [3] [4] [5] >>

Date: 2015-09-21 04:07 pm (UTC)
From: [identity profile] http://users.livejournal.com/_winnie/
В случае с Intel - это может быть более доброкачественной ситуацией вида "мы не можем отвечать за то, что наша хитрая оптимизация под хаки и особенности нашего процессора - не даст обратного эффекта на чужом процессоре"

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

Прямо сейчас - на виду истории вида "соцсеть Foogram.com запретила ссылки на Kontbook.com"
Edited Date: 2015-09-21 04:08 pm (UTC)

Date: 2015-09-21 04:15 pm (UTC)
vladimir000: (Default)
From: [personal profile] vladimir000
> "мы не можем отвечать за то, что наша хитрая оптимизация под хаки и особенности нашего процессора - не даст обратного эффекта на чужом процессоре"

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

Date: 2015-09-21 04:20 pm (UTC)
From: [identity profile] green-fr.livejournal.com
То есть писать бесконечные if для разных версий процессоров. Можно назвать инженеров из Intel ленивыми людьми, которые ограничились первым if'ом.

Date: 2015-09-21 04:23 pm (UTC)
vladimir000: (Default)
From: [personal profile] vladimir000
Даже если ограничиться первым if'ом, он должен проверять не реальный процессор машины (может, это вообще виртуалка под альфой двадцатилетней давности:), а ключ компилятора.

Date: 2015-09-21 04:41 pm (UTC)
From: [identity profile] shlema.livejournal.com
На похожем ещё ловили производителей Android-смартфонов: они определяют, что запущено тестовое приложение, и включают максимальную производительность выше стандартной (точнее, поднимают ограничение температуры GPU, как я понимаю).

Вот тут, например: http://www.anandtech.com/show/7384/state-of-cheating-in-android-benchmarks

Date: 2015-09-21 04:41 pm (UTC)
From: [identity profile] ashamrin.livejournal.com
> как уже ответили выше, интеловские оптимизации на амд могут не поддерживаться на аппаратном уровне.

Нет. Компилятор проверяет процессор, на котором работает сам компилятор. И ещё не известно, на каком процессоре будет потом запускаться скомпилированная программа. Вот если бы проверка типа процессора шла в рантайме, тогда ваше замечание имело бы смысл.

Date: 2015-09-21 04:42 pm (UTC)
From: [identity profile] meshko.livejournal.com
Инструкции с процессор не суют абы как. Придумывают спцификацию, делают instruction set. И каждый процессор его либо поддерживает, либо нет. Компилятор должен оптимизировать под instruction set, который данный процессор декларирует как поддерживаемый. Если что-то не работает, это проблема процессора, а не компилятора (при условии, что код сгенеирован правильно, разумеется).
Проблема в том, что Intel решил смотреть не на поддерживаемый instruction set, а на вендора процессора. Разумеется, производители компилятора имеют право это делать -- зачем им тратить кучу времени на тестирование на AMD, если ясно и известно, что, скажем, 90% пользователей пользуются Intel.
Проблема только в том, что в данном случае компиялтор делает та же фирма, что и процессор, вот и выходит нехорошо.

Date: 2015-09-21 04:45 pm (UTC)
From: [identity profile] tr1gger.livejournal.com
В браузерах тоже раньше было принято определять в каком мы браузере, чтобы понять какие фичи поддерживаются.
Слава богу это в прошлом, сейчас принято каждую фичу отдельно проверять (feature detection vs browser detection). Ну и браузеров и их версий расплодилось столько, что всех не проверишь.

Date: 2015-09-21 04:45 pm (UTC)
From: [identity profile] b0p0h0k.livejournal.com
Отмазка не катит.
Компилятор не имеет права предполагать, что построенный код будет выполняться на том же самом CPU, что и компилятор.
Так что, да, только ключами компилятора это должно управляться.

Date: 2015-09-21 04:46 pm (UTC)
From: [identity profile] pavlikk.livejournal.com
Если бы у меня не было нового Фольксвагена, купил бы.
Fuck the system!

Date: 2015-09-21 04:50 pm (UTC)
From: [identity profile] levtsn.livejournal.com

УмнО

Date: 2015-09-21 04:52 pm (UTC)
From: [identity profile] vova-belkin.livejournal.com
Понятно, что боши заплатят за всё, но всё-таки интересно, как "автомобиль" определяет что он именно проходит емишшен-тест, да не какой-нибудь, да государственный, а не допустим просто работает на холостом ходу?

Вроде как "тест на выхлоп" проводится вставлением специального прибора в выхлопную трубу, никак не могу вообразить, что можно как-то этот момент особо отследить, без наделения жестяного глушителями свойствами искусственного интеллекта.

Date: 2015-09-21 04:54 pm (UTC)
From: [identity profile] massaraksh10.livejournal.com
Ну, Вольксваген нарушает закон, а Интел же вроде нет?

Date: 2015-09-21 04:55 pm (UTC)
From: [identity profile] levtsn.livejournal.com

Вобще то по идее выхлоп мерят на холостых. Чем там можно играть чтобы выхлоп уменьшать на мощности? На холостом стгит датчик кислорода и подбирает бедную смесь. А что можно менять на ходу, так чтоб за счет загрязнения иметь прирост мощности я не знаю. Угол зажигания чтоль или фазы газораспределения, так они ремнем грм задаютмя не порегулируеш.

Date: 2015-09-21 04:56 pm (UTC)
From: [identity profile] levtsn.livejournal.com

Холостой ход оптимизиоовать это не проблема. А вот на мощности - это потеря мощности и динамтки авты.

Date: 2015-09-21 05:01 pm (UTC)
From: [identity profile] http://users.livejournal.com/_winnie/
Наличие специальной инструкции процессора ещё не гарантирует, что она работает быстрее чем комбинация неспециальных инструкций. Я слышал много историй вида "да, на этой версии чипа SSE4 формально поддерживается, но лучше генерить код под SSE3".

Опции компилятора "используй такой-то instruction set" вместо "используй runtime-детектирование" - в ICC наличии.
Edited Date: 2015-09-21 05:02 pm (UTC)

Date: 2015-09-21 05:03 pm (UTC)
From: [identity profile] meshko.livejournal.com
эта проверка runtime

Date: 2015-09-21 05:07 pm (UTC)
From: [identity profile] levtsn.livejournal.com

А на мотоциклы ставят клапан который меняет режтм глушителя с тихого на громкий
Бошам стоит эту фичу, включение режима неэкологичного, отдать на чиптюнинг

Edited Date: 2015-09-21 05:08 pm (UTC)

Date: 2015-09-21 05:10 pm (UTC)
From: [identity profile] irrelative.livejournal.com
Не на холостом ходу. Не забывайте, что во время теста ведущие колеса ставят на катки.
У большинства современных машин компьютер проверяет давление в шинах, как передних, так и задних. Если есть возможность читать давление, то наверняка есть возможность проверять кутятся колеса или стоят на месте.
Я не знаю, как оно на самом деле работает, но первое, что приходит в голову - это узнавать ситуацию, когда передние (ведущие) колеса "едут", а задние нет.

Date: 2015-09-21 05:12 pm (UTC)
From: [identity profile] vova-belkin.livejournal.com
Насколько я понимаю - оптимизация холостого хода вполне насущная и законная проблема: в городском цикле на "холостой ход" может приходиться до десятков процентов общего выхлопа, причем именно что "вхолостую", вполне рационально оптимизировать, причем оптимизация вполне лобовая - "если колеса не крутятся а двигатель работает - врубай контроль выхлопа на полную катушку".

Когда авто едет - там оптимизация более тонкая и неоднозначная, неизбежны трэйд-оффс и проч.

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

Если "государственный измеритель выхлопа" измеряет выхлоп на холостом ходу - это скорее проблема государственного измерителя, нес па?

Date: 2015-09-21 05:13 pm (UTC)
From: [identity profile] dibr.livejournal.com
1. А как вообще Интел должен делать оптимизацию для АМД? У него вообще говоря может даже не быть необходимой для этого информации - АМД ведь не тупой клон интела, у них "свои фишки" в процессоре.

2. Раз "компилятор выдаёт особо оптимизированный код [...] в зависимости от того, что CPU реально поддерживает", значит речь идёт не о коммерческой разработке ПО (разработчику важно чтобы его программа работала на процессоре заказчика/потребителя, а не на его собственном, а программа, идеально оптимизированная под особенности одного процессора может вообще не заработать на другом похожем), а о ситуации "написали программу, тут же и запустили" (какие-нибудь научные расчёты с самописными программами например). А это во-первых не такое уж частое применение, а во-вторых - пусть АМД выкатят свой компилятор, оптимизированный под АМД, и проблема решится (или станет симметричной).

Date: 2015-09-21 05:16 pm (UTC)
From: [identity profile] irrelative.livejournal.com
В Штатах не на холостых - всегда на катках (валиках - или как это там называется?). Причем, делается несколько замеров на разных оборотах, то есть можно, по идее, еще и "паттерн" узнавать.

Date: 2015-09-21 05:17 pm (UTC)
From: [identity profile] dibr.livejournal.com
> Отмазка не катит.
> Компилятор не имеет права предполагать, что построенный код будет выполняться на том же самом CPU, что и компилятор.

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

Date: 2015-09-21 05:19 pm (UTC)
From: [identity profile] dumalkin.livejournal.com
В Израиле проверка идет не на холостом ходу, а на определенных оборотах двигателя, в течении какого то времени. Если они ловят работу двигателя в этом режиме на нейтрали то получится вполне себе Тест-детектор.

Date: 2015-09-21 05:23 pm (UTC)
From: [identity profile] irrelative.livejournal.com
У меня как раз Golf TDI 2013 года. С живым интересом слежу за развитием событий.
Page 1 of 5 << [1] [2] [3] [4] [5] >>

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
2829 3031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 30th, 2025 07:03 pm
Powered by Dreamwidth Studios