Tenemos un MacPro de 12 núcleos para hacer algunos cálculos de Monte Carlo. Sus procesadores Intel Xeon tienen Hyper-Threading (HT) habilitado, por lo que en realidad debería haber 24 procesos en paralelo para que sean totalmente utilizados. Sin embargo, nuestros calcs son más eficientes para ejecutarse en 12x100% que en 24x50%, por lo que tratamos de desactivar Hyper-Threading a través del panel Processor
en las preferencias del sistema para obtener un mayor rendimiento. También se puede convertir HT fuera porDesactivando Hyper-Threading en 6-core Intel Xeon
hwprefs -v cpu_ht=false
Entonces nos encontramos con algunas pruebas y aquí es lo que conseguimos:
- 12 tareas paralelas se ejecutan al mismo tiempo w/o W/O HT a nuestra decepción.
- 24 tareas paralelas suelta 20% si HT está apagado (no -50%, ya que pensamos)
- Cuando HT está en, el cambio de 24 a 12 tareas disminuye la eficiencia al 20% (también sorprendente)
- Cuando HT está desactivado, cambiar de 24 a 12 no cambia nada.
Parece que Hyper-Threading solo disminuye el rendimiento para nuestros cálculos y no hay forma de evitarlo. El programa que utilizamos para los calcs está escrito en Fortran y compilado con gfortran
. ¿Hay alguna manera de hacerlo más eficiente con esta pieza de hardware?
Actualización: Nuestros cálculos Monte Carlo (MCC) se realiza normalmente en medidas para evitar la pérdida de datos y debido a otras razones (que no siempre es posible evitar este tipo de medidas). En nuestro caso, cada paso consiste en muchas simulaciones con duración variable. Como cada paso se divide entre varias tareas paralelas, también tienen una duración variable. Esencialmente, todas las tareas más rápidas tienen que esperar hasta que se haga lo más lento. Este hecho nos obliga a dar pasos más grandes, que finalizan con una menor desviación en el tiempo debido al promedio, por lo que los procesadores no pierden el tiempo esperando. Esta es nuestra motivación para tener 12 * 2.66 GHz en lugar de 24 * 1.33 GHz. Si fuera posible apagar HT, obtendríamos un rendimiento de + 10% cambiando de 24 tareas con HT a 12 tareas sin HT. Sin embargo, las pruebas muestran que perdemos un 20%. Entonces mi conclusión es que el cálculo es 30% ineficiente.
Para las pruebas utilicé pasos bastante grandes, sin embargo, generalmente los pasos son más cortos, por lo que la eficiencia es aún mayor.
Hay una razón más: algunos de nuestros cálculos requieren 3-5 GB de memoria, por lo que probablemente vea cuán económico sería para nosotros tener 12 tareas rápidas. Estamos trabajando para implementar la memoria compartida, pero va a ser un proyecto a largo plazo. Por lo tanto, necesitamos saber cómo hacer que el hardware/software existente sea lo más rápido posible.
http://forums.macrumors.com/archive/index.php/t-733238.html – rwong
Normalmente esto se puede desactivar en la configuración del BIOS, pero no estoy familiarizado con los Mac, por lo que es posible que no se aplique. –
Hay algo extraño en tu pregunta ... Parece que * ganas * de HyperThreading, sin embargo, ¿lo inhabilitarías? Usted dice que su cálculo es más eficiente con 12 // que 24, pero sus pruebas parecen indicar lo contrario. Entonces, ¿por qué quieres deshabilitar HT? – jv42