Pages: [1]   Go Down
Print
Author Topic: Argomenti lezione 25/11/2013 ?  (Read 3284 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
fabio_bm
Apprendista Forumista
**
Offline Offline

Posts: 108


« 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?
Logged
bilog
Moderator
Apprendista Forumista
*****
Offline Offline

Posts: 104


WWW
« Reply #1 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.


Logged

Ci vediamo sul canale IRC del dipartimento, #dmi su Azzurra
fabio_bm
Apprendista Forumista
**
Offline Offline

Posts: 108


« Reply #2 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.
Logged
Pages: [1]   Go Up
Print
Jump to: