Diagrammi di ridimensionamento / efficienza paralleli log-log


17

Gran parte del mio lavoro ruota attorno al miglioramento della scalabilità degli algoritmi e uno dei modi preferiti per mostrare il ridimensionamento parallelo e / o l'efficienza parallela è quello di tracciare le prestazioni di un algoritmo / codice sul numero di core, ad es.

diagramma di ridimensionamento parallelo artificiale

dove l' asse rappresenta il numero di core e l' asse un po 'metrico, ad esempio il lavoro svolto per unità di tempo. Le diverse curve mostrano efficienze parallele del 20%, 40%, 60%, 80% e 100% rispettivamente a 64 core.yXy

Sfortunatamente, in molte pubblicazioni, questi risultati sono tracciati con un ridimensionamento del log-log , ad esempio i risultati in questo o in questo documento. Il problema con questi grafici di log è che è incredibilmente difficile valutare l'effettivo ridimensionamento / efficienza paralleli, ad es

inserisci qui la descrizione dell'immagine

Che è la stessa trama di cui sopra, ma con il ridimensionamento log-log. Si noti che ora non esiste una grande differenza tra i risultati per l'efficienza parallela del 60%, 80% o 100%. Ho scritto un po 'più ampiamente su questo qui .

Quindi, ecco la mia domanda: quali sono le motivazioni per mostrare i risultati nel ridimensionamento dei log-log? Uso regolarmente il ridimensionamento lineare per mostrare i miei risultati e vengo regolarmente martellato dagli arbitri che affermano che i miei risultati di ridimensionamento / efficienza paralleli non sembrano buoni come i risultati (log-log) degli altri, ma per la mia vita io non riesco a capire perché dovrei cambiare gli stili di trama.

Risposte:


16

Attualmente stiamo scrivendo un documento che contiene una serie di grafici comparabili e abbiamo più o meno avuto lo stesso problema. L'articolo tratta del confronto tra il ridimensionamento di diversi algoritmi e il numero di core, che varia tra 1 e fino a 100k su un BlueGene. La ragione per usare i loglog in questa situazione è il numero di ordini di grandezza coinvolti. Non è possibile tracciare 6 ordini di grandezza su una scala lineare.

E infatti, quando si traccia il tempo sul numero di core nel loglog, gli algoritmi non sono molto distinguibili, come si può vedere nella trama seguente. Tempi di una serie di algoritmi su scala loglog.  I diversi algoritmi sono difficili da distinguere.

Ep=T1/(pTp)T1TpppEpp

Ep=Tref/(pTp)Tref dell'algoritmo più veloce .

Tracciare l'efficienza parallela relativa su una scala di semilogrammo mostra abbastanza chiaramente il ridimensionamento di un algoritmo e mostra anche come gli algoritmi si comportano l'uno rispetto all'altro. Efficienza parallela relativa di un numero di algoritmi rispetto al numero di core.


2
X

Si noti che i grafici non sembrano impressionanti quanto gli altri grafici di ridimensionamento, in quanto scendono abbastanza rapidamente sulla scala del log. Inoltre, in teoria puoi anche tracciare l'efficienza in un diagramma di log per vedere più dettagli sul bordo destro. Si noti tuttavia che ciò significa che si guarda in dettaglio a efficienze molto basse, che probabilmente non è di grande interesse.
olenz,

14

Georg Hager ne ha scritto in Fooling the Masses - Stunt 3: la scala di registro è il tuo amico .

Sebbene sia vero che i grafici di log-log di forte ridimensionamento non sono molto esigenti nella fascia alta, consentono di mostrare il ridimensionamento su molti più ordini di grandezza. Per capire perché questo è utile, considera un problema 3D con un perfezionamento regolare. Su una scala lineare, è possibile mostrare ragionevolmente le prestazioni su circa due ordini di grandezza, ad esempio 1024 core, 8192 core e 65536 core. È impossibile per il lettore dire dalla trama se hai eseguito qualcosa di più piccolo, e realisticamente, la trama per lo più confronta solo le due corse più grandi.

Ora supponiamo di poter adattare 1 milione di celle della griglia per core in memoria, ciò significa che dopo un forte ridimensionamento di due volte di un fattore 8, possiamo ancora avere 16k celle per core. Questa è ancora una dimensione di sottodominio considerevole e possiamo aspettarci che molti algoritmi funzionino in modo efficiente lì. Abbiamo coperto lo spettro visivo del grafico (da 1024 a 65536 core), ma non siamo nemmeno entrati nel regime in cui il forte ridimensionamento diventa difficile.

Supponiamo invece che siamo partiti da 16 core, anche con 1 milione di celle della griglia per core. Ora se scaliamo a 65536 core, avremo solo 244 celle per core, che sarà molto più esigente. Un asse log è l'unico modo per rappresentare chiaramente lo spettro da 16 core a 65536 core. Ovviamente puoi sempre usare un asse lineare e avere una didascalia che dice "i punti dati per i nuclei 16, 128 e 1024 si sovrappongono nella figura", ma ora stai usando le parole invece della figura stessa per mostrare.

Una scala log-log consente inoltre al ridimensionamento del "ripristino" di attributi della macchina come lo spostamento oltre un singolo nodo o rack. Sta a te decidere se è desiderabile o meno.


Xy

1
È molto più difficile ridimensionare un singolo problema di un fattore di 4096 piuttosto che ridimensionare due diverse dimensioni del problema di un fattore di 64 ciascuno. Nell'esempio che ho fornito, è facile fare in modo che i due casi indipendenti presentino un'efficienza migliore del 95%, ma il caso combinato singolo abbia un'efficienza inferiore al 30%. Nella scienza e nell'industria, non esiste una ragione predeterminata per cui il tempo di rotazione desiderato rientri nella gamma di dimensioni ristrette in cui l'algoritmo è "comodo".
Jed Brown,

Sono completamente d'accordo sul fatto che il ridimensionamento da uno a migliaia sia la grande sfida! La ragione per cui considero differenti dimensioni come problemi diversi è che significherà cose diverse per l'utente finale. Ad esempio in MD, la maggior parte dei biologi non ha un BlueGene nel seminterrato, ma ha alcune stazioni di lavoro multi-core, o anche una concessione per un po 'di tempo su un cluster di dimensioni moderate (piccolo numero di nodi) e persone che guardano in grande I problemi di CFD, tuttavia, non si occuperanno molto del caso a nodo singolo perché il problema non si adatta alla memoria. Non si tratta del comfort dell'algoritmo, ma della configurazione dell'utente.
Pedro

2

Sono d'accordo con tutto ciò che Jed ha detto nella sua risposta, ma volevo aggiungere quanto segue. Sono diventato un fan del modo in cui Martin Berzins e i suoi colleghi mostrano il ridimensionamento per la loro struttura di Uintah. Tracciano un ridimensionamento debole e forte del codice sugli assi log-log (utilizzando il tempo di esecuzione per fase del metodo). Penso che mostri come il codice si ridimensiona abbastanza bene (anche se la deviazione dal ridimensionamento perfetto è un po 'difficile da determinare). Vedi a pagina 7 e 8 le figure 7 e 8 di questo * documento per esempio. Danno anche una tabella con i numeri corrispondenti a ciascuna figura di ridimensionamento.

Un vantaggio di questo è che una volta forniti i numeri, non c'è molto che un recensore possa dire (o almeno non molto che non si può confutare).

* J. Luitjens, M. Berzins. "Miglioramento delle prestazioni di Uintah: un quadro computazionale di mesh adattivo su larga scala", in Atti del 24 ° Simposio internazionale di elaborazione parallela e distribuita IEEE (IPDPS10), Atlanta, GA, pagg. 1--10. 2010. DOI: 10.1109 / IPDPS.2010.5470437


Qualche possibilità che tu possa incorporare l'immagine direttamente nella tua risposta?
Aron Ahmadia,

Mentre discutibilmente il giusto uso per prendere in prestito la loro figura, preferirei indirizzare il traffico verso il sito degli autori. Forse inventerò alcuni numeri e il mio grafico e tornerò più tardi con una figura.
Bill Barth,

Da quel punto di vista, puoi avvolgere l'immagine in modo che si colleghi al sito dell'autore, nonché aumentare la quantità di testo nel collegamento. Se vuoi discuterne di più, posso aprire un thread di meta / chat.
Aron Ahmadia,

@BillBarth Il tuo link reindirizza alla loro home page ora. Potresti risolverlo o incorporare l'immagine desiderata?
Jed Brown,

1
@JedBrown Link modificato. Riferimento completo aggiunto. DOI aggiunto.
Bill Barth,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.