Statistiche corrette per la segnalazione dei risultati di accelerazione


12

Supponiamo di avere versioni lente e veloci di alcuni codici e di voler segnalare un numero di accelerazione confrontando i due. Eseguo la versione lenta volte e la versione veloce m volte, producendo tempi ( s 1 , ... , s n ) e ( f 1 , ... , f m ) . Il modo più semplice per produrre uno speedup è la media dei mezzi: ˉ snm(s1,,sn)(f1,,fm) Tuttavia, ciò non tiene conto dei valori anomali.

s¯f¯=mi<nsinj<mfj

Domanda : qual è la migliore statistica da utilizzare quando si segnalano i numeri di accelerazione?


3
Quanto è grande la deviazione standard rispetto alla media? Qualunque cosa tu faccia, dovresti segnalare ciò che hai fatto e probabilmente inserire barre di errore se sono grandi. Se sono davvero grandi, dovresti indagare sulla fonte. La maggior parte del codice del computer dovrebbe essere eseguita in modo abbastanza deterministico nel tempo, a meno che non ci sia un componente casuale nel programma stesso o non si condividano risorse del computer con altri (potrebbe trattarsi di rete o disco, non solo nodi di cluster). Se il problema è rappresentato dalla concorrenza per le risorse del disco, è possibile prendere in considerazione la possibilità di segnalare le prestazioni con l'I / O disabilitato (abbastanza comune) - accertarsi di annotarlo.
Bill Barth,

Su Edison (un supercomputer Cray), ho una differenza del 2% tra due campioni. Sul mio laptop vedo una deviazione standard del 6-8% misurata su 10 campioni. Entrambi sono solo per il kernel di calcolo, nessun I / O.
Geoffrey Irving,

Per chiarire il motivo per cui sto citando dei valori anomali se le varianze sono già ragionevolmente basse: si tratta di una quantità statistica sufficientemente fondamentale che vorrei conoscere il modo ideale per segnalarlo, anche se in questo caso particolare vado bene anche i modi non ideali.
Geoffrey Irving,

2
La domanda è: cosa stai cercando di comunicare e la formula comunicherà meglio? Non credo di aver mai visto un documento che riporta la variabilità da corsa a corsa nello speedup a meno che la causa non sia centrale nel documento. Dato che stabiliamo una relazione lineare tra tempo di esecuzione e conteggio processore / attività / thread, probabilmente stai bene usare il rapporto tra medie, ma poi barra di errore che con il rapporto tra max-min e min-max se pensi che mostrare l'intervallo sia importante. Inoltre, dovresti probabilmente esaminare il ridimensionamento di frequenza e le opzioni di pinning delle attività per ridurre la tua variabilità. :)
Bill Barth,

Ci possono essere molti trucchi per eliminare l'IO. Tra le ottimizzazioni del compilatore e i trucchi "Copia su scrittura" possono esserci legami davvero non ovvi verso il basso. Di solito seguo il prototipo di d1 = loadData (); d2 = copia (d1); r1 = algo (d2); r2 = algo (d1) e considera solo il tempo della seconda corsa.
meawoppl,

Risposte:


9

Oltre a tutto ciò che Bill Barth ha già detto sopra, vorrei menzionare che le persone segnalano spesso il più veloce di diverse corse. La logica è che il tempo di esecuzione effettivo è il tempo di esecuzione ideale più un numero qualsiasi di rallentamenti derivanti da altri processi in esecuzione, ritardi del sistema operativo, ritardi di rete, ecc. Dal momento che questi sono tutti rumori che non ci interessano, utilizzando il tempo di esecuzione più veloce arriva più vicino a quello che vogliamo davvero conoscere.


Sfortunatamente, questo principio non aiuta quando si segnala uno speedup tra due algoritmi.
Geoffrey Irving,

3
@GeoffreyIrving, perché no? Entrambi gli algoritmi hanno un'aspettativa di prestazione teorica rispetto alla dimensione del problema (o conteggio del processore o altri parametri non statistici) con ordine di basso ordine e indipendente dai parametri ignorato. Usare il tempo più veloce (e notare questo fatto) ti aiuta semplicemente a ignorare questi termini aggiuntivi. Sembra una buona strategia. A meno che tu non ci dica diversamente, sembra che tu stia cercando di capire come comunicare la differenza tra gli algoritmi nel modo più efficace, e il suggerimento di Wolfgang è convenzionale e previsto, quindi potrebbe trasmettere al meglio quell'informazione.
Bill Barth,

1
Oops, sì, hai ragione. Ritiro felicemente la mia dichiarazione.
Geoffrey Irving,

(+1) Una domanda a margine: Completo vedere il tuo punto sulla distribuzione del rumore non simmetrica , ecc. Diciamo però che realizzo un'implementazione A, un'implementazione B e le confrontiamo e dopo un ragionevole numero di esecuzioni, il Il 25 ° quantile, la mediana e la media sono ~ 4,5 volte più veloci in A rispetto a B mentre il 0% quantile è ~ 3x. Quando si confronta l'implementazione da A a B, nonostante il fatto che: yes A is theoretically only ~3x fasternon potrebbe aspettarsi un acceleratore ~ ​​3x non rappresentativo dell'accelerazione su quando si utilizza l'implementazione A anziché B? (A proposito, questo è un esempio di vita reale)
usεr11852,

1
@ usεr11852: tutto dipende dal sistema in cui ti trovi. Se la tua mediana o il 25 ° quantile sono così distanti da distorcere le statistiche nel modo in cui ipotizzi qui, allora probabilmente sei su un sistema che ha molto rumore. Ad esempio, potrebbe essere usato da altri contemporaneamente, ecc. Potrebbe non essere rappresentativo dei sistemi che altri hanno per i loro esperimenti ripetuti, e mi sembrerebbe che tu stia superando i tuoi risultati in quel caso. Quindi, suggerisco ancora di segnalare le piste migliori. Qualunque cosa tu faccia, dovresti riportare nel documento quali statistiche usi.
Wolfgang Bangerth,

1

Ti suggerisco di utilizzare la mediana per fornire una stima statistica. A differenza della media, la mediana non è corrotta dai valori anomali.


1
Per i dati in cui tutto il rumore è positivo (ovvero, con una distribuzione del rumore non simmetrica), la mediana è cattiva come qualsiasi altra statistica. Per i run-time, questo è davvero il caso, vedi la mia risposta sopra.
Wolfgang Bangerth,

0

Se la deviazione standard non è trascurabile, è possibile utilizzare due grafici a riquadro affiancati, costruiti ciascuno con la tempistica di uno degli algoritmi. Non sono affatto standard nell'analisi numerica, ma fanno un ottimo lavoro nel mostrare questo tipo di informazioni.

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.