Come confrontare le prestazioni di C e CUDA in modo equo?

3

Ho sviluppato un codice CUDA che è una reimplementazione di un codice C (solo CPU).

Mi piacerebbe confrontare le prestazioni di questi due programmi. Mi chiedo come fare bene il benchmarking in questo caso, poiché l'hardware su cui vengono eseguiti è diverso.

Ad esempio, sarebbe scorretto eseguire il mio programma CUDA C su una GPU da $ 3000 e confrontare quei risultati con il codice C eseguito su una CPU da $ 100, e quindi festeggiare quale incredibile hacker GPU sono.

Esistono metodi standard per confrontare il codice scritto per GPU e CPU che prende in considerazione la differenza nell'hardware?

Calcolo unitario diviso per energia consumata, prezzo?

    
posta Vince Varga 30.11.2016 - 22:00
fonte

1 risposta

4

Devi definire con attenzione cosa stai ottimizzando. Presumo che tu stia scrivendo i tuoi programmi per risolvere qualche problema. Possiamo quindi chiedere:

  • Quanto tempo ci vuole per risolvere il problema con C o CUDA? Questo tempo di ciclo include sia il tempo di sviluppo che il tempo di esecuzione. Può includere il tempo necessario per acquisire le competenze e le attrezzature necessarie.

  • Quanto costa risolvere il problema con C o CUDA? Ciò include lo stipendio dello sviluppatore, i costi energetici, i costi generali, i costi di transazione e il costo opportunità.

Quindi sfortunatamente, questo è più sulla gestione del progetto che sul benchmarking.

Ci sono un paio di estremi in cui la risposta è semplice.

Esistono casi d'uso in cui domina lo sforzo di sviluppo. Questo accade quando i tuoi problemi sono molto specifici e ciascuno ha bisogno di uno sforzo di sviluppo sostanziale, e ogni programma viene eseguito solo un paio di volte. Per esempio. se ho bisogno di 5 giorni per scrivere il programma, non importa se ottengo una risposta tra 12 ore o 45 minuti.

Esistono casi di utilizzo in cui le prestazioni non elaborate sono più importanti, ad es. in sistemi realtime ad alte prestazioni. I maggiori costi di sviluppo, energia e hardware sono più tollerabili rispetto a ottenere una risposta di 5 millisecondi troppo tardi.

E ci sono casi d'uso in cui il programma viene eseguito così tanto che i costi dell'hardware e dello sviluppo vengono rapidamente ammortizzati. Le prestazioni per watt iniziano a dominare il calcolo.

Sono attualmente coinvolto in un piccolo progetto di ricerca in cui il tempo di esecuzione domina sui tempi di sviluppo e il lungo tempo di ciclo si traduce in un costo opportunità significativo. Ciò significa che siamo effettivamente limitati nel tempo e non limitati ai costi. Per accorciare il ciclo, stiamo investendo più risorse nello sviluppo e nell'hardware, mentre i costi energetici sono trascurabili. Se il passaggio a una tecnologia ad alte prestazioni raddoppia lo sforzo di sviluppo ma raddoppia le prestazioni, ne vale assolutamente la pena per noi.

    
risposta data 03.12.2016 - 12:29
fonte

Leggi altre domande sui tag