Abbiamo ottenuto un MacPro a 12 core per eseguire alcuni calcoli Monte Carlo. I suoi processori Intel Xeon hanno Hyper-Threading (HT) abilitato, quindi in realtà dovrebbero esserci 24 processi in esecuzione in parallelo per renderli pienamente utilizzati. Tuttavia, i nostri calc sono più efficienti da eseguire su 12x100% rispetto a 24x50%, quindi abbiamo tentato di disattivare Hyper-Threading tramite il pannello Processor
nelle preferenze di sistema per ottenere prestazioni più elevate. Si può anche trasformare HT via daDisattivazione di Hyper-Threading in Intel Xeon a 6 core
hwprefs -v cpu_ht=false
Poi abbiamo eseguito alcuni test e qui è quello che abbiamo ottenuto:
- 12 task paralleli eseguiti contemporaneamente w/o w/o HT per la nostra delusione.
- 24 task paralleli allentato 20% se HT è spento (non -50% come abbiamo pensato)
- Quando HT inizia, passando da 24 a 12 attività diminuisce l'efficienza del 20% (anche sorprendente)
- Quando HT è spento, il passaggio da 24 a 12 non cambia nulla.
Sembra che Hyper-Threading riduca solo le prestazioni per i nostri calcoli e non c'è modo di evitarlo. Il programma che usiamo per i calc è scritto in Fortran e compilato con gfortran
. C'è un modo per renderlo più efficiente con questo pezzo di hardware?
Aggiornamento: nostri calcoli Monte Carlo (MCC) sono in genere fatto in passi per evitare la perdita di dati e per altri motivi (che non è sempre possibile evitare tali misure). Nel nostro caso ogni passo consiste in molte simulazioni con durata variabile. Poiché ogni passaggio è suddiviso tra un numero di attività parallele, hanno anche una durata variabile. In sostanza, tutte le attività più veloci devono attendere fino a quando non viene eseguito il più lento. Questo fatto ci costringe a fare passi più grandi, che finiscono con meno deviazioni nel tempo a causa della media, quindi i processori non perdono tempo ad aspettare. Questa è la nostra motivazione per avere 12 * 2.66 GHz invece di 24 * 1.33 GHz. Se fosse possibile disattivare HT, otterremmo circa il 10% di prestazioni passando da 24 task w/HT a 12 task senza HT. Tuttavia, i test mostrano che perdiamo il 20%. Quindi la mia conclusione è che il calcolo è del 30% inefficiente.
Per i test ho utilizzato gradini piuttosto grandi, tuttavia di solito i passaggi sono più brevi, quindi l'efficienza diventa ancora più lunga.
C'è un motivo in più: alcuni dei nostri calcoli richiedono 3-5 GB di memoria, quindi probabilmente vedrete quanto sarebbe economico per noi avere 12 attività veloci. Stiamo lavorando per implementare la memoria condivisa, ma sarà un progetto a breve termine. Pertanto, dobbiamo scoprire come rendere l'hardware/software esistente il più velocemente possibile.
http://forums.macrumors.com/archive/index.php/t-733238.html – rwong
Normalmente questo può essere disattivato nell'impostazione del BIOS, ma non ho familiarità con i Mac, quindi potrebbe non essere applicabile. –
C'è qualcosa di strano nella tua domanda ... Sembra che * guadagni * da HyperThreading, ma lo disabiliti? Dici che il tuo calcolo è più efficiente con 12 // rispetto a 24, ma i tuoi test sembrano dire il contrario. Allora, perché vuoi disabilitare HT? – jv42