Улучшение производительности (если есть) из гиперпотока трудно предсказать.
Hyperthreading означает, что если одна нить задерживается (почти) по любой причине, у CPU будет пул инструкций из другого потока для (попытки) выполнить. Если, например, код сильно зависит от задержек в основной памяти (например, непредсказуемых шаблонов чтения без предварительной выборки), гиперпоточность может существенно повысить производительность.
В другом направлении, если код тщательно написан для покрытия латентности путем тщательного использования кеша, предварительной выборки и т. Д., Он может получить мало или ничего от гиперпотока. Особенно с более старыми операционными системами, которые не пытаются учитывать гиперпотоки в своем потоковом планировании, дополнительные потоки могут фактически приводить к дополнительным контекстным переключателям, что замедляет общее выполнение.
Предполагая, что вы начинаете с полностью однопоточного кода и добавляете некоторые директивы OpenMP, мой собственный опыт заключается в том, что Hyperthreading обычно хорош для улучшения производительности чем-то на заказ или 10%. Если код делает практически любую попытку префектуры или что-то подобное, большинство (если не все) этого преимущества испаряются почти сразу.
Я только что узнал, что вы можете отключить гиперпотоки в BIOS. Это то, как вы определяете улучшение? – roro
@roro: Я проверил тесты как путем отключения гиперпотока в BIOS, так и путем ручного ограничения количества потоков на количество физических ядер, которые, как я знал, были доступны и вручную настраивали сходство потоков. –
Я согласен, что улучшение производительности HT трудно предсказать. Однако все ресурсы выполнения не используются до остановки. Вместо этого ресурсы выполнения (порты, кеш, ...) распределяются между гиперпотоками. Таким образом, добавление μop для HT 1 может выполняться на порту Haswell 0, а lea μop для HT 2 выполняется на порту 5 в том же такте. Цитата из Intel: «С точки зрения микроархитектуры это означает, что инструкции обоих логических процессоров будут сохраняться и выполняться одновременно на ресурсах совместного использования». http://www.cs.virginia.edu/~mc2zk/cs451/vol6iss1_art01.pdf – Olsonist