Зачем нам был нужен HT?

Alexander Komarov (Intel) (5 пост(а)) 27.09.2007 21:36

Уважаемые читатели, прошу прощения за задержку с обещанным постом о классификации параллельных библиотек. Я обнаружил, что своровать скомпилировать перевести его с каких-нибудь англоязычных источников невозможно за неимением таковых. Так что напишу пока еще один акын. Вчера в Новосибирске на дне разработчика Microsoft мне задали вопрос о reverse hyperthreading. Появилась такая утка месяцев 10 назад, и связана была с не совсем корректной интерпритацией одной фичи. Фича заключается в том, что в некоторых 2-х ядерных процессорах возможно отключение одного из ядер, с тем, чтобы оставшееся можно было разогнать по частоте не поднимая энергопотребления/выделения тепла. Действительно, есть классы алгоритмов, которые вообще не параллелятся, и, насколько мне известно, эта возможность реально применяется лишь для небольшого класса HPC приложений.

Но недавно я услышал от одного клиента совсем другую причину отключения второго ядра. "Мы считаем", говорил архитектор, "что у нас есть несколько не пойманных data-race'ов. Требования к надежности софта очень серьезные, поэтому мы отключим второе ядро в BIOS." Речь идет о встроенном ПО, управляющим ответственной системой, которой пользуются опосредованно все читатели этого блога. Кстати, работает софт под Windows XP. Конечно я оветил: "позвольте, но вы рекомендуете клиентам использовать P4 с Hyperthreading, так что основные data-race'ы должны были уже проявиться в ваших тестах. Плюс ваш софт написан на С++, и Thread Checker'ом их все можно поймать очень быстро"

Так вот, о чем это я: Hyper Threading на P4 - был гениальным нововведеним, которое для хорошо написанного софта не создавало ничего, кроме проблем с отладкой. Зато те многопоточные рограммы, которые еще тогда, 5 лет назад, стабильно работали на P4 с неотключенным HT (а многие - отключали), теперь спокойно и без дополнительной отладки работают на core 2 duo. Тем же, кто поленился тестироваться с HT - придется теперь это делать все равно. Или просить пользователя отключать второе ядро, но на это пойдет только самоубийца, или производитель встроенного ПО.

Категории: Многоядерность

Комментарии (4) Комментарии в RSS-потоке

По Dmitry Oganezov в Сентябрь 27th, 2007 в 23:33
Логично, логично. Я думаю что если хорошенько постараться, то можно придумать еще с десяток экзотических причин отключить второе, третье и так далее ядра :).
(Кстати, а это идея - а не сделать ли нам мини-конкурс "почему я отключил второе ядро" :). Как приз - PIII, постараюсь добыть из своих запасов.)
С одним не совсем согласен - для действительно ХОРОШО написанного софта Hyper Threading создавал не проблемы, а скорее возможности для дополнительной отладки...

По Alexander Komarov в Сентябрь 27th, 2007 в 23:35
согласен, особенно насчет PIII.
Для некоторых возможности для дополнительной отладки эквивалентны проблемам :)

По Marianna Svetlosanova в Сентябрь 28th, 2007 в 00:05
кстати, вот вам и пример.
вчера общалась с одним из победителем конкурса Game Demo Contest. Так вот он поделился тайной русской действительности о том, что его игра писалась на Р4 с HT.. но, жури тестировало ее на Quad core, а результат - 3 место. Не плохо, имхо. :)

По Alexander Komarov в Сентябрь 28th, 2007 в 00:09
А тестировал бы без HT - игра упала бы на конкурсе сразу же. (Либо пришлось бы писать в одном потоке, что для игры очень, очень сложно)


А что думаете вы?

Имя (обязательное поле)

Электронная почта (обязательное поле; не будет отображено на данной странице)

Ваш URL-адрес (дополнительный)

Комментарии (обязательное поле)