Поведение Hyper-Thread для приложений omp Windows 7 против Centos
Я пытаюсь согласовать разницу, наблюдаемую в том, как код omp работает в двух разных системах с гиперпоточностью. Система 1 - это Intel Xeon X5680 (12 физических процессоров /24 логических процессора) с Centos 5.4. Система 2 представляет собой Intel Xeon E5645 (6 физических процессоров /12 логических процессоров) с Windows 7.
Код хорошо распараллеливается и хорошо использует каждый поток.
Сначала я запустил код в системе 1, который демонстрировал стандартное ускорение с увеличением потоков, пока количество потоков не превысило количество физических ядер. После превышения количества физических ядер ускорение стало противоречивым и меньше, чем пиковое ускорение, которое я достиг, используя 12 потоков. Первоначально я обнаружил, что такое поведение имеет смысл, предполагая, что 12 потоков полностью используют 12 физических процессоров и что дополнительные потоки не помогают, поскольку первые 12 полностью используют физические процессоры.
Затем я запустил систему 2, которая продемонстрировала скорость до 12 потоков (вдвое больше физических процессоров). Я обнаружил, что это озадачивает, потому что я ожидал, что скорость остановится, когда я превыслю число физических процессоров. Итак, я проверил прогон с 6 потоками и обнаружил, что каждый поток был ограничен половиной физического процессора - и что единственный способ полностью использовать физические процессоры - запустить 12 потоков.
Поэтому я думаю, что мой вопрос заключается в том, почему система 1 позволяет одной гиперпотоке полностью использовать физический процессор, а система 2 ограничивает использование гиперпотока 50% физическим процессором? Возможно, это вариант конфигурации?
Спасибо за ваши ответы.