Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => GPGPU/CUDA, 6 CFU => Topic started by: fabio_bm on 25-11-2013, 19:26:44



Title: Argomenti lezione 25/11/2013 ?
Post by: fabio_bm on 25-11-2013, 19:26:44
Ciao a tutti, purtroppo non sono potuto venire oggi 25/11, e nel repository git non vedo differenze da mercoledi 20/11 ( sempre che non mi sbaglio  :[Emoticon] Asd: ).
Che argomenti sono stati trattati oggi 25/11/'13?


Title: Re:Argomenti lezione 25/11/2013 ?
Post by: bilog on 25-11-2013, 19:58:25
Ok, ho appena caricato sul server l'ultima versione codice.

Gli argomenti della lezione sono stait:

  • kernel templatizzati;
  • precisione dei float e non-commutatività delle operazioni; conseguenze per la riduzione (provare con 32*1024*1024 elementi per credere);
  • uso del visual profiler

Per la templatizzazione del kernel, non c'è molto da dire: come nel C++, i kernel possono essere template e quindi ad esempio funzionare con tipi di dato diverso (int, float etc) senza dover scrivere n versioni del codice.

Per la questione dei float sugli appunti del corso non c'è molto. Il punto chiave è che per via della loro rappresentazione (rimando alla pagina di Wikipedia come riferimento), i valori rappresentabili in virgola mobile sono piú densi vicino allo 0 e si vanno diradando man mano che ci si allontana. Questo comporta perdita di informazioni quando si sommano valori molto diversi tra loro in valore assoluto.

In condizioni particolari, persino gli interi non sono tutti rappresentabili: si procede quindi di 2 in 2, poi di 4 in 4 etc. Sommando ad un valore X molto grande un valore Y piú piccolo del ’passo’ tra X e il successivo valore rappresentabile, si ottiene che X + Y = X numericamente.

Nella riduzione seriale questo si manifesta con un risultato che è inferiore a quello reale, perché superato 16*1024*1024 aggiungere 1 non cambia il valore dell'accumulatore. Nella riduzione parallela invece questo non succede (almeno con 32*1024*1024 elementi) perché le accumulazioni parziali hanno valori totali inferiori.

Per quanto riguarda il profiling, infine, abbiamo (con varie disavventure) visto come il sistema di analisi del visual profiler può esprimere un giudizio generale sull'efficienza del codice e dare suggerimenti (da valutare comunque cum grano salis, soprattutto sulle architetture piú vecchie) su cosa fare per migliorarlo.




Title: Re:Argomenti lezione 25/11/2013 ?
Post by: fabio_bm on 25-11-2013, 20:56:31
Ok perfetto.

Ho provato questa versione del codice con emulatore gpu ocelot, sia con numero di elementi < di ( 16*1024*1024 ), sia con numero di elementi maggiore; C'è effettivamente stata una perdita di informazione nella riduzione seriale ( quella parallela non posso provarla al momento, dato che è emulata, e quindi gira sempre 'serialmente' ).
Sembra un concetto simile allo zero macchina...

Per quanto riguarda il visual profiler darò un'occhiata in proprio.
La ringrazio di tutto.