
Estoy interesado en ejecutar un procesamiento razonablemente pesado en mi computadora de escritorio/portátil (no es tan malo como para requerir un clúster, pero necesita una buena máquina doméstica). Mi pregunta es cuántos subprocesos crear para realizar el trabajo más rápidamente (supongamos que la aplicación distribuye la carga de trabajo con muy pocos gastos generales).
Normalmente crearía un subproceso por procesador, pero me preguntaba si la capacidad de hyperthreading en el Core i5/i7 significa que en realidad debería crear dos subprocesos por procesador (es decir, un subproceso por procesador virtual). ¿Nadie sabe?
*Obviamente, una respuesta razonable sería intentarlo y ver. Como tarda unas 12 horas en ejecutarse, preferiría hacerlo bien la primera vez, pero con mucho gusto publicaré los resultados si tengo la oportunidad de ejecutarlo en ambos sentidos.
Respuesta1
Ésta es una pregunta abierta que requiere una costosa evaluación comparativa. Personalmente lo he visto en ambos sentidos. A menos que realmente hayas estropeado tu multithreading, la diferencia será de aproximadamente +-10%, por lo que vale la pena intentarlo en ambos sentidos. Aunque lleve mucho tiempo.
Muchos clústeres de informática de alto rendimiento creados a partir de componentes Intel tienen HT deshabilitado. Esto se debe a una buena razón, ya que esos códigos tienden a saturar el hardware y, por lo tanto, su rendimiento está muy ligado a la saturación del acceso a la memoria, lo que será peor en el caso de HT, ya que los subprocesos se computan y se encienden y apagan. Verhttp://semiaccurate.com/2012/04/25/does-disabling-hyper-threading-increase-rendimiento/.
Pero si su código no está altamente ajustado, es posible que no experimente casi el mismo aumento de rendimiento.http://semiaccurate.com/2012/04/25/does-disabling-hyper-threading-increase-rendimiento/.
Parece que para la computación con una sola CPU, deshabilitar el hyperthreading puede aumentar algunos programas en un 1%, pero también perjudicar significativamente a otros programas. Quizás en ~10%.
Esto significa que, a menos que sus puntos de referencia indiquen lo contrario, debe crear 1 subproceso por núcleo hiperprocesado/real en su máquina de escritorio.
Respuesta2
Estoy hablando completamente de experiencias con el plegado F@H aquí al decir que lo mejor es un solo subproceso por núcleo (ya sea virtual o físico).
Dicho esto, podría ser una buena idea dejar un solo núcleo libre para manejar los procesos en segundo plano y las tareas generales de la computadora, ya que incluso un poco de uso puede arruinar una tarea.
Mire la afinidad de la CPU si desea realizar un seguimiento de dónde se ejecutan las cosas. Como regla general, asignar anúcleos físicos primero(es decir:inclusonumeraciones), luego los núcleos de hyperthread.