Ho notato che molti dei miei calcoli multi-thread sono più veloci se disattivo l'hyper-threading nel BIOS.Disabilitare l'hyperthreading e cambiare ProcessorAffinity?
Ho anche imparato che posso programmazione disabilitare la CPU (logico): s modificando l'affinità del processore per il processo corrente, per esempio come questo in C#:
// using System.Diagnostics;
var current = Process.GetCurrentProcess();
var affinity = current.ProcessorAffinity.ToInt32();
current.ProcessorAffinity = new IntPtr(affinity & 0x5555);
Almeno dal punto prestazione di visualizzazione, disabilitando ogni seconda CPU (logica) modificando l'affinità del processore si ottiene lo stesso effetto di disabilitare completamente l'hyperthreading?
Hmm, il problema chiave è: hai intenzione di spedire la tua macchina dev con il tuo software? –
Un'altra considerazione potrebbe essere i processi del sistema operativo. Se si disabilita l'hyperthreading nel BIOS e il software tenta di utilizzare tutti i core, quando un processo del sistema operativo (o altro processo in background) tenta di essere eseguito, sarà in concorrenza con il software per l'accesso al processore. La cosa migliore potrebbe essere semplicemente provare e confrontare entrambe le opzioni e vedere quali differenze si trovano nei tempi del processo; la differenza potrebbe essere irrilevante per consentire la facilità di non disabilitare l'hyperthreading. NOTA: se non si dispone del controllo hardware, controllare i processori AMD che dispongono di core dedicati senza hyperthreading. –
Grazie, Chris, una risposta molto utile. Farò qualche altro benchmarking per vedere se una qualsiasi delle opzioni farà la differenza in un normale ambiente utente. –