Мы получили 12-ядерный MacPro для выполнения расчетов по Монте-Карло. Его процессоры Intel Xeon поддерживают технологию Hyper-Threading (HT), поэтому на самом деле должно быть выполнено 24 процесса, чтобы они полностью использовались. Однако наши вычисления более эффективны для работы на 12x100%, чем 24x50%, поэтому мы попытались отключить Hyper-Threading через панель Processor
в системных настройках, чтобы получить более высокую производительность. Можно также включить HT выключить с помощьюОтключение Hyper-Threading в 6-ядерном процессоре Intel Xeon
hwprefs -v cpu_ht=false
Затем мы провели несколько тестов, и вот что мы получили:
- 12 параллельной задача выполняется в то же время ж/или без ХТ к нашему разочарованию.
- 24 параллельных задач свободно 20%, если HT выключен (не -50%, как мы думали)
- Когда HT включен, переход от 24 до 12 задач снижает эффективность на 20% (также удивительно)
- Когда HT выключен, переход с 24 на 12 ничего не меняет.
Кажется, что Hyper-Threading просто снижает производительность для наших расчетов, и нет способа избежать этого. Программа, которую мы используем для вычислений, записывается в Fortran и скомпилирована с gfortran
. Есть ли способ сделать его более эффективным с этим аппаратным обеспечением?
Обновление: Наши расчеты по методу Монте-Карло (MCC), как правило, делается с шагом, чтобы избежать потери данных и по другим причинам (это не всегда возможно, чтобы избежать таких шагов). В нашем случае каждый шаг состоит из многих симуляций с переменной продолжительностью. Поскольку каждый шаг разбивается на несколько параллельных задач, они также имеют переменную продолжительность. По сути, все более быстрые задачи должны ждать, пока не будет выполнено самое медленное. Этот факт заставляет нас делать большие шаги, которые заканчиваются с меньшим отклонением во времени из-за усреднения, поэтому процессоры не теряют времени на ожидание. Это наша мотивация для 12 * 2,66 ГГц вместо 24 * 1,33 ГГц. Если бы можно было отключить HT, тогда мы получим около + 10% производительности, переключаясь с 24 задач с HT на 12 задач без HT. Однако тесты показывают, что мы теряем 20%. Поэтому мой вывод состоит в том, что расчет составляет 30% как неэффективный.
Для тестов я использовал довольно большие шаги, однако обычно шаги короче, поэтому эффективность становится еще более высокой.
Есть еще одна причина - некоторые из наших расчетов требуют 3-5 ГБ памяти, поэтому вы, вероятно, увидите, насколько экономично было бы иметь 12 быстрых задач. Мы работаем над реализацией разделяемой памяти, но это будет долгосрочный проект. Поэтому нам нужно выяснить, как сделать существующее аппаратное/программное обеспечение как можно быстрее.
http://forums.macrumors.com/archive/index.php/t-733238.html – rwong
Обычно это можно отключить в настройках BIOS, но я не знаком с компьютерами Mac, поэтому он может не применяться. –
В вашем вопросе есть что-то странное ... Вы, кажется, * получаете * от HyperThreading, но вы бы отключили его? Вы говорите, что ваши вычисления более эффективны с 12 // 24, но ваши тесты, похоже, говорят иначе. Итак, почему вы хотите отключить HT? – jv42