Отключение Hyper-Threading в 6-ядерном Intel Xeon

У нас есть 12-ядерный MacPro для выполнения некоторых вычислений Монте-Карло. В его процессорах Intel Xeon включена функция Hyper-Threading (HT), поэтому на самом деле должно быть 24 процесса, работающих параллельно, чтобы они могли полностью использоваться. Однако наши вычисления более эффективны для работы на 12x100%, чем на 24x50%, поэтому мы попытались отключить Hyper-Threading с помощью панели Processor в системных настройках, чтобы получить более высокую производительность. Можно также выключить HT с помощью

hwprefs -v cpu_ht=false

. Затем мы провели несколько тестов и получили следующее:

  1. 12 параллельных задач выполняются одновременно без HT, к нашему разочарованию.
  2. 24 параллельных задачи теряют 20%, если HT выключен (не -50%, как мы думали)
  3. Когда HT включен переключение с 24 на 12 задач снижает эффективность на 20% (что тоже удивительно)
  4. Когда HT выключен, переключение с 24 на 12 ничего не меняет.

Похоже, что Hyper-Threading просто снижает производительность для наших вычислений. и нет способа избежать этого. Программа, которую мы используем для вычислений, написана на Фортране и скомпилирована с помощью gfortran . Есть ли способ сделать его более эффективным с помощью этого оборудования?


Обновление: Наши расчеты Монте-Карло (MCC) обычно выполняются поэтапно, чтобы избежать потери данных и по другим причинам (не всегда возможно избегайте таких шагов). В нашем случае каждый шаг состоит из множества симуляций с переменной продолжительностью. Поскольку каждый шаг делится между несколькими параллельными задачами, они также имеют переменную продолжительность. По сути, все более быстрые задачи должны ждать, пока не будут выполнены самые медленные. Этот факт заставляет нас делать более крупные шаги, которые заканчиваются с меньшими отклонениями во времени из-за усреднения, поэтому процессоры не тратят время на ожидание. Это наша мотивация для использования 12 * 2,66 ГГц вместо 24 * 1,33 ГГц. Если бы можно было отключить HT, то мы бы получили около + 10% производительности, переключившись с 24 задач с HT на 12 задач без HT. Однако тесты показывают, что мы теряем 20%. Поэтому я пришел к выводу, что расчет неэффективен на 30%.

Для тестов я использовал довольно большие шаги, однако обычно шаги короче, поэтому эффективность становится еще больше.

Есть еще одна причина - для некоторых наших вычислений требуется 3-5 ГБ памяти, так что вы, вероятно, видите, насколько экономично было бы для нас иметь 12 быстрых задач. Мы работаем над реализацией общей памяти, но это будет долгосрочный проект. Поэтому нам нужно выяснить, как сделать существующее оборудование / программное обеспечение как можно быстрее.

6
задан Andrei Fokau 4 October 2010 в 13:08
поделиться