calcolo scientifico: ii lezione r l i - unina.itmurli/didattica/2005_2006/cs/ii... · 2007. 10....
TRANSCRIPT
![Page 1: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/1.jpg)
1
1
A. MURLICalcolo Scientifico: II lezione
Luisa D’Amorea.a. 2005-2006
BLAS A. Murli - Calcolo Scientifico 2
A. MURLIProblema:
Progettazione e sviluppo di software
efficiente per
il calcolo matriciale
BLAS A. Murli - Calcolo Scientifico 3
A. MURLI
Ma perchè sviluppare software efficiente ?
BLAS A. Murli - Calcolo Scientifico 4
A. MURLI
Storia/Evoluzione della tecnologia hardware
Velocità del proc.
Memoria RAM
Hard disk
20 M flops200 K words200 M words
19706 G flops
50 M words500 G words
199510 Tera flops
100 G words1 Peta words
2010
Intel 4004
IBM RS/6000 SP
IBM® Power 3®
ASCII Red
CRAY 1
![Page 2: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/2.jpg)
2
BLAS A. Murli - Calcolo Scientifico 5
A. MURLI
…. Se basta aspettare un po’ di tempo in più e utilizzare un calcolatore più
potente ?
BLAS A. Murli - Calcolo Scientifico 6
A. MURLI
Storia/Evoluzione della tecnologia software
costo computazionale necessario alla risoluzione
di un problema differenziale 3D
su uno stesso calcolatore
Tempo
Memoria
2 Mega anni
800 M words 5 M words
1945
1 giorno
300 K words 170 K words
1965
0.2 sec
50 K words
19851955 1975
20 anni 12 ore
BLAS A. Murli - Calcolo Scientifico 7
A. MURLI
“As machines become more powerful, the efficiency of algorithms grows more important, not less. “
Nick Trefethen, 1997
evoluzione tecnologia hw:
processori, memorie, reti
evoluzione sw di base: network management, compilatori, strum. sw
engineering, …
In realtà ….
BLAS A. Murli - Calcolo Scientifico 8
A. MURLI
Come sviluppare software efficiente ?
![Page 3: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/3.jpg)
3
BLAS A. Murli - Calcolo Scientifico 9
A. MURLI
Da che cosa dipende il tempo di esecuzione di un software ?
Il tempo di esecuzione dell’algoritmo e dipende oltre che dal numero di operazioni
floating-point anche dagli accessi alla MEMORIA
T1 = Nmem x tmem + N flop x t flop
Tempo per accessi alla memoria
Tempo per op.Floating point
BLAS A. Murli - Calcolo Scientifico 10
A. MURLI
Dipendenza dalla
tecnologia
Dipendenza dall’algoritmo
inoltre …
Dipendenza dalla tecnologia
Dipendenza dall’algoritmo
N mem x tmem N flop x t flop+Tcalc =
BLAS A. Murli - Calcolo Scientifico 11
A. MURLIRidurre il numero di accessi
alla memoriaRidurre il tempo di accesso alla
memoria
N mem x tmem N flop x t flopTcalc = +
Trascuriamo in questa analisi
la complessità di tempo dell’algoritmo (Nflop) e
il tempo di esecuzione di 1 flop ( tflop)
♦ Come ridurre il tempo di esecuzione di un algoritmo ?
BLAS A. Murli - Calcolo Scientifico 12
A. MURLI
Come ridurre il tempo legato gli accessi alla memoria?
Ridurre il numero di accessi alla memoria
Ridurre il tempo di accesso allamemoria
N mem x tmem N flop x t flopTcalc = +
Come si può ridurre il
tempo di accesso alla
memoria ?
come si può ridurre il
numero di accessi alla
memoria ?
![Page 4: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/4.jpg)
4
BLAS A. Murli - Calcolo Scientifico 13
A. MURLI
Come ridurre il tempo legato gli accessi alla memoria?
Ridurre il numero di accessi alla memoria
Ridurre il tempo di accesso allamemoria
Utlizzando e sfruttando la memoria “gerarchica”
Utilizzando e Sfruttando il Principio di Località dei dati
N mem x tmem N flop x t flopTcalc = +
BLAS A. Murli - Calcolo Scientifico 14
A. MURLI
memoria secondaria (10ms, 1 GB)
Che cosa è la memoria gerarchica deiChe cosa è la memoria gerarchica dei(calcolatori (calcolatori monoprocessoremonoprocessore)?)?
memoria principale (100ns, 100 MB)
cache (10 ns, 100 KB)
registri (1 ns, 100B)
BLAS A. Murli - Calcolo Scientifico 15
A. MURLI
La visione gerarchica della memoria
di un calcolatore consente di evidenziare per
ciascun livello il tempo di accesso e la sua
Capacità
(risposta “tecnologica” all’avanzamento
delle prestazioni del processore)
BLAS A. Murli - Calcolo Scientifico 16
A. MURLI
Infatti…
Il gap tra performance del processore e performance della memoria ha una crescita del 50%/anno
Il gap tra performance del processore e performance della memoria ha una crescita del 50%/anno
1980
1981
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
1982
1
Anni
perf. proc.:60%/anno
(2X/1.5anni)
perf. DRAM:9%/anno
(2X/10 anni)
10
100
1000
DRAM
CPU
Perf
orm
ance Legge di Moore
![Page 5: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/5.jpg)
5
BLAS A. Murli - Calcolo Scientifico 17
A. MURLI
Impatto sullo sviluppo del software sequenziale:
Riuso dei dati nei Registri e cache
Riuso dei dati nei Registri e cache
gli algoritmi che utilizzano la località dei dati sono progettati in maniera tale
da ridurre il numero di accessi alla memoria “lenta”e ottimizzano gli accessi ai dati “locali” ovvero a quelli
che risiedono nella memoria “veloce”
BLAS A. Murli - Calcolo Scientifico 18
A. MURLI
Basic Linear Algebra Subprograms (BLAS)
BLAS1: operazioni vet-vet (SAXPY, DOT, ...)
BLAS2: operazioni mat-vet (GEMV, ...)
BLAS3: operazioni mat-mat (GEMM, ...)
BLAS A. Murli - Calcolo Scientifico 19
A. MURLI
BLAS di livello 1, 2 e 3
♦ BLAS livello 1 operazioniVettore-Vettore
♦ BLAS livello 2 operazioniMatrice-Vettore
♦ BLAS livello 3 operazioniMatrice-Matrice + *
*
+ *
BLAS A. Murli - Calcolo Scientifico 20
A. MURLI
Confronto BLAS1, BLAS2, BLAS3
IBM RS/6000 Power 3 (200 MHz, 800 Mflop/s Peak)
0100200300400500600700800
10 100 200 300 400 500Order of vector/Matrices
Mflo
p/s
BLAS 3
BLAS 2
BLAS 1
![Page 6: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/6.jpg)
6
BLAS A. Murli - Calcolo Scientifico 21
A. MURLI
Prodotto matrice x matriceCase study n. 1:
Calcolo di
CBA =⋅
nxnC B, A, ℜ∈
Indipendentemente dall’ ordine dei cicliabbiamo sempre O(n3) operazioni f.p.
for _ = 1:n; for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
BLAS A. Murli - Calcolo Scientifico 22
A. MURLI
6 Varianti della moltiplicazione di matrici
for _ = 1:n; for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
BLAS A. Murli - Calcolo Scientifico 23
A. MURLIfor _ = 1:n;
for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
ijk
C i,j A I,k B k,j
6 Varianti della moltiplicazione di matrici
ij
k
BLAS A. Murli - Calcolo Scientifico 24
A. MURLIfor _ = 1:n;
for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
ijk
ikj
C i,j A I,k B k,j
6 Varianti della moltiplicazione di matrici
ik
j
![Page 7: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/7.jpg)
7
BLAS A. Murli - Calcolo Scientifico 25
A. MURLIfor _ = 1:n;
for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
ijk
ikj
kij
C i,j A I,k B k,j
6 Varianti della moltiplicazione di matrici
ki
j
BLAS A. Murli - Calcolo Scientifico 26
A. MURLIfor _ = 1:n;
for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
ijk
ikj
kij
kji
C i,j A I,k B k,j
6 Varianti della moltiplicazione di matrici
kj
i
BLAS A. Murli - Calcolo Scientifico 27
A. MURLIfor _ = 1:n;
for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
ijk
ikj
kij
kji
jki
C i,j A I,k B k,j
6 Varianti della moltiplicazione di matrici
jk
i
BLAS A. Murli - Calcolo Scientifico 28
A. MURLIfor _ = 1:n;
for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
ijk
ikj
kij
kji
jki
jik
C i,j A I,k B k,j
6 Varianti della moltiplicazione di matrici
ji
k
![Page 8: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/8.jpg)
8
BLAS A. Murli - Calcolo Scientifico 29
A. MURLI
Quale versione implementare?
BLAS A. Murli - Calcolo Scientifico 30
A. MURLIfor _ = 1:n;
for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
ijk
C i,j A I,k B k,j
6 Varianti della moltiplicazione di matrici
ij
kOperazione di base:
prodotto scalare(BLAS1)
della riga
i-ma di A e
della colonna j –ma di B
BLAS A. Murli - Calcolo Scientifico 31
A. MURLIfor _ = 1:n;
for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
ijk
ikj
C i,j A I,k B k,j
6 Varianti della moltiplicazione di matrici
ik
j
Operazione di base:
Matrice B x vettore(riga) Aik
(aggiornamento per riga)
(BLAS 2)BLAS A. Murli - Calcolo Scientifico 32
A. MURLIfor _ = 1:n;
for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
ijk
ikj
kij
C i,j A I,k B k,j
6 Varianti della moltiplicazione di matrici
ki
j
Operazione di base:saxpydella riga k –ma di B
con lo scalare Aik
(BLAS 1)
![Page 9: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/9.jpg)
9
BLAS A. Murli - Calcolo Scientifico 33
A. MURLIfor _ = 1:n;
for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
ijk
ikj
kij
kji
C i,j A I,k B k,j
6 Varianti della moltiplicazione di matrici
kj
i
Operazione di base:saxpydella colonna k –ma di A
con lo scalare Bkj
(BLAS 1) BLAS A. Murli - Calcolo Scientifico 34
A. MURLIfor _ = 1:n;
for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
ijk
ikj
kij
kji
jki
C i,j A I,k B k,j
6 Varianti della moltiplicazione di matrici
jk
i
Operazione di base:
Matrice x vettore
(aggiornamento per colonna)j
(BLAS 2)
BLAS A. Murli - Calcolo Scientifico 35
A. MURLIfor _ = 1:n;
for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
ijk
ikj
kij
kji
jki
jik
C i,j A I,k B k,j
6 Varianti della moltiplicazione di matrici
ji
k
Operazione di base:
prodotto scalare
(BLAS1)della riga i-ma di A e
della colonna j –ma di B BLAS A. Murli - Calcolo Scientifico 36
A. MURLI
Ciascuna permutazione degli indici implica
l’esecuzione di una diversa operazione di base
tra vettori (BLAS 1) o
tra vettori e matrici (BLAS 2 )
![Page 10: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/10.jpg)
10
BLAS A. Murli - Calcolo Scientifico 37
A. MURLI
Case study 2
Risoluzione di
bAx =nnxn bx,,A ℜ∈ℜ∈
Indipendentemente dall’ ordine dei cicliabbiamo sempre O(n3) operazioni f.p.
Mediante L’ Algoritmo di
Eliminazione di Gauss
for k = 1 to n-1
for i = k+1 to n
a(i,k) = a(i,k)/a(k,k)
for j = k+1 to n
a(i,j) = a(i,j) – a(i,k) * a(k,j)
endforendforendfor
BLAS A. Murli - Calcolo Scientifico 38
A. MURLI
Algoritmo di Eliminazione di Gauss♦ Trasformazione della matrice in una triangolare sup♦ Risoluzione del sistema triangolare Ux = c
…for k = 1 to n-1
… for each row ifor i = k+1 to n
… add a multiple of row i to row jfor j = i to n
a(i,j) = a(i,j) - (a(i,k)/a(k,k)) * a(k,j)
BLAS A. Murli - Calcolo Scientifico 39
A. MURLI
Primo raffinamento dell’algoritmo….♦ Versione 0
for k = 1 to n-1for i = k+1 to n
m = a(i,k)/a(k,k)for j = i to n
a(i,j) = a(i,j) - m * a(k,j)
… for k = 1 to n-1… for each row
for i = k +1 to n… add a multiple of row i to row jfor j = i to n
a(i,j) = a(i,j) - (a(i,k)/a(k,k)) * a(k,j)
♦ Versione 1:Eliminare il calcolo di a(i,k)/a(k,k) dal ciclo più interno
BLAS A. Murli - Calcolo Scientifico 40
A. MURLI
Secondo raffinamento ….
♦ Versione 1for k = 1 to n-1
for i = k+1 to nm = a(i,k)/a(k,k)for j = i to n
a(i,j) = a(i,j) - m * a(k,j)
for k = 1 to n-1for i = k+1 to n
a(i,k) = a(i,k)/a(k,k)for j = i to n
a(i,j) = a(i,j) – a(i,k) * a(k,j)
♦ Versione 2: Memorizzazione dei moltiplicatori nel triangolo inferiore di A
![Page 11: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/11.jpg)
11
BLAS A. Murli - Calcolo Scientifico 41
A. MURLI
Terzo raffinamento …♦ Versione 2
for k = 1 to n-1for i = k+1 to n
a(i,k) = a(i,k)/a(k,k)for j = k+1 to n
a(i,j) = a(i,j) – a(i,k) * a(k,j)
for k = 1 to n-1for i = k+1 to n
a(i,k) = a(i,k)/a(k,k)for j = k to n
a(i,j) = a(i,j) – a(i,k) * a(k,j)
♦ Versione 3:Evitare il calcolo sugli elementi che sappiamo annullarsi(ovvero gli elementi al di sotto dell’elemento diagonale)
BLAS A. Murli - Calcolo Scientifico 42
A. MURLI
In particolare, nella Versione 3(k i j ):
Aggiornamento di un vettore (riga) mediante il prodotto di uno scalare
per un vettore (O(n) op. f.p.)
Operazione di base?k
ikii aaaa ⋅−=
for k = 1 to n-1
for i = k+1 to n
a(i,k) = a(i,k)/a(k,k)
for j = k+1 to n
a(i,j) = a(i,j) – a(i,k) * a(k,j)
endforendforendfor
kij
BLAS A. Murli - Calcolo Scientifico 43
A. MURLI
Invertendo i cicli ……Versione 4(k j i ):
Aggiornamento di un vettore (colonna) mediante il prodotto di uno scalare
per un vettore (O(n) op. f.p.)
Operazione di base?i
kjjj aaaa ⋅−=
for k = 1 to n-1
for j = k+1 to n
a(i,k) = a(i,k)/a(k,k)endfor
for i = k+1 to n
a(i,j) = a(i,j) – a(i,k) * a(k,j)
endforendfor
kji
BLAS A. Murli - Calcolo Scientifico 44
A. MURLI
Invertendo i cicli ….Versione 5(j k i):
Aggiornamento di un vettore mediante il prodotto di una matrice per un
vettore (O(n2) op. f.p.)
Operazioni di base?
kjj aMaa ⋅−=
for j = 1 to n-1
for k = k+1 to n
.......for i = k+1 to n
a(i,j) = a(i,j) – a(i,k) * a(k,j)
endforendfor
jki
![Page 12: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/12.jpg)
12
BLAS A. Murli - Calcolo Scientifico 45
A. MURLIQuale versione dello stesso
algoritmo conviene implementare?
BLAS A. Murli - Calcolo Scientifico 46
A. MURLI
Come sviluppare software efficiente ?
♦ ...scoprendo e sfruttando l’interazione tra il problemada risolvere, il software che lo risolve, e l’architetturasu cui si risolve
OVVERO
♦ Il disegno dell’algoritmo e la realizzazione del software devono tener conto dell’ambiente disviluppo (compilatore, memoria, reti, aritmetica, etc..).
BLAS A. Murli - Calcolo Scientifico 47
A. MURLI
Pentium
Ambiente computazionale
♦ Architetture monoprocessore
MEMORY
CUALU
♦Linguaggi ad alto livello (ad esempio Fortran, C)
BLAS A. Murli - Calcolo Scientifico 48
A. MURLIIn che modo l’ambiente computazionale ha
influenzato l’implementazione di questi algoritmi ?
![Page 13: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/13.jpg)
13
BLAS A. Murli - Calcolo Scientifico 49
A. MURLIfor _ = 1:n;
for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
ijk
ikj
kij
kji
jki
jik
C i,j A I,k B k,j
FortranC
6 Varianti della moltiplicazione di matrici
BLAS A. Murli - Calcolo Scientifico 50
A. MURLIfor _ = 1:n;
for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
ijk
ikj
kij
kji
jki
jik
C i,j A I,k B k,j
FortranC
6 Varianti della moltiplicazione di matrici
Accesso per riga
Accesso per colonna
BLAS A. Murli - Calcolo Scientifico 51
A. MURLI
1980:
Messa a punto di librerie e package di
software efficiente per le operazioni tra vettori
Basic Linear Algebra Subprograms (BLAS 1)
C. Lawson, R. Hanson, D. Kincaid, F.Krogh, Basic Linear Algebra Subprograms for Fortran Usage, ACM TOMS, 1979
BLAS A. Murli - Calcolo Scientifico 52
A. MURLI
Principali moduli di BLAS 1
SAXPY(N,ALPHA,X,INCX,Y,INCY)
SDOT(N,X,INCX,Y,INCY)
SNRM2(N,X,INCX)
xyy α+=(D,C,Z)
(D,C,Z)
(D,C,Z)
yxc T ⋅=
2x
O(n) operazioni floating-point su O(n) dati
(BLAS O(n))
![Page 14: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/14.jpg)
14
BLAS A. Murli - Calcolo Scientifico 53
A. MURLIQuali sono le varianti le cui operazioni di base
sono
operazioni tra vettori
(ad es saxpy, prodotto scalare )?
BLAS A. Murli - Calcolo Scientifico 54
A. MURLIfor _ = 1:n;
for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
ijk
ikj
kij
kji
jki
jik
C i,j A I,k B k,j
BLAS 1(DOT=prodotto scalare)
moltiplicazione di matrici con BLAS 1
BLAS A. Murli - Calcolo Scientifico 55
A. MURLIfor _ = 1:n;
for _ = 1:n; for _ = 1:n;
end endend
C C A Bi j i j i k k j, , , ,← +
ijk
ikj
kij
kji
jki
jik
C i,j A I,k B k,j
BLAS 1(saxpy=aggiornamento
vettore)
moltiplicazione di matrici con BLAS 1
BLAS A. Murli - Calcolo Scientifico 56
A. MURLI
In particolare, ijk e jik usano DOT
for ifor j
endforendfor
),:1(*):1,(),(),(
jnbniajicjic +=
for jfor i
endforendfor
),:1(*):1,(),(),(
jnbniajicjic +=
DOT DOT
Operazione di base prodotto scalare: s = s + x y s scalare, x,y vettori
![Page 15: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/15.jpg)
15
BLAS A. Murli - Calcolo Scientifico 57
A. MURLI
…e analogamente kij e kji usano la saxpy
for kfor i
endforendfor
):1,(*),():1,():1,(
nkbkianicnic +=
for kfor j
endforendfor
),(*),:1(),:1(),:1(
jkbknajncjnc +=
Operazione di base saxpy:
y = y + α x α scalare, x,y vettori
SAXPY SAXPY
BLAS A. Murli - Calcolo Scientifico 58
A. MURLIPerché un software basato su BLAS 1
è più efficiente ?
BLAS A. Murli - Calcolo Scientifico 59
A. MURLI
Una misura delle prestazioni…
Parametro di valutazione del traffico “parassita”
pointfloatingoperazioni#Nmemoriainaccessi#Nq
flop
mem
−==
=
Rivisitare l’algoritmo al fine di consentire il
massimo riuso possibile
dei dati che si trovano nella memoria “veloce”
BLAS A. Murli - Calcolo Scientifico 60
A. MURLI
Quanto vale il parametro q
( misura del traffico parassita )
per le operazioni di BLAS1 ?
![Page 16: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/16.jpg)
16
BLAS A. Murli - Calcolo Scientifico 61
A. MURLI
Esempio: esecuzione di una saxpy
Memoriacentrale
Vettori di dim. n
scalarexyy α+= y,x
α
x1
y2
α3
y5
Unitàfunzionale
ALU
41 – preleva x n accessi2 – preleva y n accessi
4 – calcolo 2n op. fl.p.5 – riponi y n accessi
Registri
3 – preleva 1 accessoα
BLAS A. Murli - Calcolo Scientifico 62
A. MURLI
Calcolando q….
SAXPY 23
2n13n
fmq ≈
+==
# accessi > # operazioni f.p.1 – preleva x n accessi2 – preleva y n accessi
4 – calcolo 2n op. fl.p.5 – riponi y n accessi
3 – preleva 1 accessoα
BLAS A. Murli - Calcolo Scientifico 63
A. MURLI
Esempio: esecuzione di una dot
Memoriacentrale
Vettori di dim. n
scalareyxa T= y,x
α
x1
y2
a4
Unitàfunzionale
ALU
31 – preleva x n accessi2 – preleva y n accessi
3 – calcolo 2n op. fl.p.
Registri
4 riponi 1 accessoα
DOT 12n
12nfmq ≈
+==
BLAS A. Murli - Calcolo Scientifico 64
A. MURLI
In altre parole …
•la saxpy, richiede asintoticamente
3 accessi alla memoria ogni 2 operazioni fl.p.
• la dot, richiede asintoticamente
1 accesso alla memoria ogni operazione fl.p.
Il principio della LOCALITA’ dei dati
nei registri non è applicato
in maniera soddisfacente!
![Page 17: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/17.jpg)
17
BLAS A. Murli - Calcolo Scientifico 65
A. MURLI
Anche se….
Gli algoritmi di BLAS 1 che implementano
le operazioni tra vettori
cercano comunque di sfruttare al massimo
le prestazioni
dell’architettura monoprocessore
( loop unrolling, accessi consecutivi ai registri.,…)
infatti….BLAS A. Murli - Calcolo Scientifico 66
A. MURLI
1980: Impatto sulla tecnologia hardware
Operazioni su vettori=
nuclei computazionali di base della maggior parte degli algoritmi di Analisi Numerica
Anni ’80 - ’90
Realizzazione diarchitetture vettoriali
specializzate peroperazioni su vettori
CRAY 1 (1983)
BLAS A. Murli - Calcolo Scientifico 67
A. MURLI
.. i vantaggi nell’uso di BLAS furono altri
♦ Modularità: sw scritto in termini di building blocks
♦ Chiarezza: codice più breve e più leggibile
♦ Portabilità: interfacce standard, dipendenza dall’architettura incapsulata in BLAS
♦ Affidabilità, robustezza: gestione accurata di “dettagli” algoritmici e implementativi e di situazioni di errore (es: overflow)
BLAS A. Murli - Calcolo Scientifico 68
A. MURLI
Quali sono allora le varianti dell’algoritmo di Gauss o
del prodotto di 2 matrici
più efficienti
in termini di località dei dati?
quindi
ijk , jik, kji, kij USANO BLAS 1
![Page 18: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/18.jpg)
18
BLAS A. Murli - Calcolo Scientifico 69
A. MURLI
Riprendiamo la versione kji dell’algoritmo di Gauss
for k=1, n-1
endfor
for k = 1 to n-1
for j = k+1 to n
........................ for i = k+1 to n
a(i,j) = a(i,j) – a(i,k) * a(k,j)
endforendfor
endfor
j=k+1 j=n
a(k,j), con j=k+1a(k,j), con j=k+2
a(k,j), con j=n
a(i,j), con j=k+1a(i,j), con j=n
a(i,k)
Colonnak
a(i,j), con j=k+2
j=k+1 j=n
a(i,j)
Riga
ka(k,j)
Aggiornamento
Saxpy per
colonna
BLAS A. Murli - Calcolo Scientifico 70
A. MURLI
Ogni colonna viene aggiornata, (cioè prelevata e riposta in memoria),
j volte
Uso inefficiente dei registri vettoriali
ja
Mantenere la colonna nei registri finché l’aggiornamento non è
completato
BLAS A. Murli - Calcolo Scientifico 71
A. MURLI
Considerare il ciclo “for … j” come il più esterno
ciò significa far fare all’algoritmo
definitivamente tutti gli aggiornamenti sul vettore j
OVVERO….
BLAS A. Murli - Calcolo Scientifico 72
A. MURLI
a(i,j)endfor
a(i,k)
k=1 k=n
a(k,j)
k=1
k=nx
Versione jki: rappresentazione grafica
for j=1, n-1
Prodotto colonne x colonne
di una matrice per un vettoreGAXPY
for j = 1 to n-1
for k = 1 to n
........................ for i = k+1 to n
a(i,j) = a(i,j) – a(i,k) * a(k,j)
endforendfor
endfor
![Page 19: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/19.jpg)
19
BLAS A. Murli - Calcolo Scientifico 73
A. MURLI
Prodotto colonne x colonne di una matrice per un vettore
= x
x= + x x+ +….
scalari
BLAS A. Murli - Calcolo Scientifico 74
A. MURLI
Ovvero …Versione jki
Operazione di base
Aggiornamento di un vettore medianteprodotto matrice-vettore
(Gaxpy)
Vettori di dim. n
Matrice di dim. nxyy M+= y,x
M
for j = 1 to n-1
for k = 1 to n
........................ for i = k+1 to n
a(i,j) = a(i,j) – a(i,k) * a(k,j)
endforendfor
endfor
BLAS A. Murli - Calcolo Scientifico 75
A. MURLI
1988:
Software efficiente per le operazioni tra vettori e matrici
Basic Linear Algebra Subprograms (BLAS 2)
J. Dongarra, J. DuCroz, S. Hammarling, R. Hanson, An Extended set of Fortran Basic Linear Algebra Subprograms, ACM TOMS, 1988 C.
BLAS A. Murli - Calcolo Scientifico 76
A. MURLI
Principali moduli di BLAS 2
SGEMV(TRANS,N,N,ALPHA,A,LDA, X,INCX,BETA,Y,INCY)
SSYMV(UPLO,N,ALPHA,A,X,INCX,BETA,Y,INCY)
SGER(M,N,ALPHA,A,X,INCX,Y,INCY,LDA)
yxAy βα +=
(D,C,Z)
(D,C,Z)
(D,C,Z)AyxA T += α
O(n2) operazioni floating-point su O(n2) dati
(BLAS O(n2))
matrice generica
matrice simmetrica
![Page 20: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/20.jpg)
20
BLAS A. Murli - Calcolo Scientifico 77
A. MURLI
Nell’operazione Gaxpy quanti sono gli accessi in memoria?
Vettori di dim. n
Matrice di dim. nxyy M+= y,x
M
2n3
21
2nn3nq 2
2
gaxpy +=+
=
♦ Preleva dalla memoria n accessi♦ Preleva dalla memoria n2 accessi♦ Preleva dalla memoria n accessi♦ Esegui 2n2 operazioni fl. p.♦ Riponi in memoria n accessi
yMx
xy M+y
saxpygaxpy q23
21q ≈<≈
BLAS A. Murli - Calcolo Scientifico 78
A. MURLI
Versioni j i k e j k i con BLAS 2
for j
endfor
for j
endfor
GEMV
Operazione di base:
y = y + Α x Α matrice, x,y vettori
GEMV 21
232
2
≈+
==n
nnfmq
GEMV
BLAS A. Murli - Calcolo Scientifico 79
A. MURLI
Quindi..
La GEMV richiede asintoticamente
1 accesso alla memoria ogni 2 operazioni fl. point
Gli algoritmi di BLAS 2 sfruttano meglio
il principio della località dei dati nella cacheBLAS A. Murli - Calcolo Scientifico 80
A. MURLI
Un PROBLEMA nella gaxpy
La capacità dei registri vettoriali è limitata
Nell’ esecuzione della GAXPY
se n è maggiore della capacità dei registri, si prelevano solo sottovettori di y
![Page 21: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/21.jpg)
21
BLAS A. Murli - Calcolo Scientifico 81
A. MURLI
Strategia
Riformulare l’algoritmo in maniera da mantenere i blocchi di y nei registri finché l’aggiornamento su ciascun blocco
non è completato
= +
(1)y (1)M
⎟⎠⎞
⎜⎝⎛
rn
y ⎟⎠⎞
⎜⎝⎛
rn
My y xM
r
r
r
Ciascun blocco di y è calcolato
come prodotto di un blocco di M
per il vettore x
BLAS A. Murli - Calcolo Scientifico 82
A. MURLI
Calcolo di q (Gaxpy)
n1
2r1
21
2nrnnr2r
gaxpy ++≈++
=µ~
♦ Preleva un blocco di r accessi♦ Preleva un blocco di nr accessi♦ Preleva il vettore n accessi♦ Esegui 2nr operazioni fl. p.♦ Riponi il blocco di n accessi
yM
xxyy (j)(j)(j) M+=
y
migliore) caso r(n 2n3
21
gaxpygaxpy
=
=+= µµ~
Per ogni i
BLAS A. Murli - Calcolo Scientifico 83
A. MURLI
1990: Impatto sulla tecnologia hw
I registri forniscono gli operandialle unità funzionali ad una velocità paragonabile a quella di calcolo
MAhanno dimensioni molto limitate
Sviluppo di un livello intermedio di memoria
(Cache memory)
Registri
L 1 Cache
L 2 Cache L 3 Cache
Memoria Locale
Memoria Remota
Memoria Secondaria
capa
cità velocità
BLAS A. Murli - Calcolo Scientifico 84
A. MURLILe routine di BLAS 2 garantiscono il riuso dei
dati nei registri vettoriali
……utilizzano in maniera efficienteanche la memoria cache ?
![Page 22: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/22.jpg)
22
BLAS A. Murli - Calcolo Scientifico 85
A. MURLI
Riprendiamo la versione jki (o jik)
La matrice attiva M viene prelevata e riposta nella cache
più volte al variare di j e k
IDEA:
Mantenere la matrice M nella cache finché l’aggiornamento non è completato
Quale formulazione dell’ algoritmo di Gauss consente ciò?
for jfor k
for i
endfor
a(i,j) = a(i,j) – a(i,k) * a(k,j)
BLAS A. Murli - Calcolo Scientifico 86
A. MURLI
1990
Software efficiente per l’aggiornamento matrice-matrice
BLAS 2J. Dongarra, J. DuCroz, I. Duff, S. Hammarling, A Set of Level 3 Basic Linear Algebra Subprograms, ACM TOMS, 1990
BLAS 3
BLAS A. Murli - Calcolo Scientifico 87
A. MURLI
Principali moduli di BLAS 3
SGEMM(TRANSA,TRANSB,N,N,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
STRMV(SIDE,UPLO,TRANS,DIAG,N,N,ALPHA,A,LDA,B,LDB)
ABCC αβ += (D,C,Z)
(D,C,Z)e)triangolar matrice (T
TBB α=
O(n3) operazioni floating-point su O(n3) dati
(BLAS O(n3))
BLAS A. Murli - Calcolo Scientifico 88
A. MURLI
Calcolo di µ (Sgemm)
gaxpy3
2
sgemm 21
2n3
n2
2n4n µµ ≈+<==
♦ Preleva C n2 accessi♦ Preleva A n2 accessi♦ Preleva B n2 accessi♦ Esegui C=C+AB 2n3 operazioni fl. p.♦ Riponi C n2 accessi
Ulteriore riduzione di µ
![Page 23: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/23.jpg)
23
BLAS A. Murli - Calcolo Scientifico 89
A. MURLI
Algoritmo Sgemm
Osservazione:La capacità della cache è
limitata
Se n è maggiore della capacità, è possibile memorizzare solo sottoblocchi delle matrici C di
dimensione minore
gaxpysgemm µµ ≈
BLAS A. Murli - Calcolo Scientifico 90
A. MURLI
Strategia
Suddivisione delle matrici in blocchi di dimensioni uguali a quelle della cache
Riformulazione di BLAS 3 in termini di algoritmi a blocchi
BLAS A. Murli - Calcolo Scientifico 91
A. MURLI
Cache Blocking
for ii = 1,n,nb
for jj = 1,n,nb
for kk = 1,n,nb
for k = kk,kk+nb-1
for j = jj,jj+nb-1
for i = ii,ii+nb-1
ci,j = ci,j + ai,k * bk,j
endfor
. . .
endfor
+= *II
JJ
KK
JJ
II
KK
Il nucleo computazionale è
ancora un prodotto matrice-matrice
Dim. blocco
BLAS A. Murli - Calcolo Scientifico 92
A. MURLI
Calcolo di q (Sgemm a blocchi)
migliore)(cason2
2nb1
2pnb3
2p(nb)3p
2p(nb)p(nb)3nbq 3
22
sgemm =+=+
=+
=
♦ Preleva nb2 accessi♦ Preleva nb2 accessi♦ Preleva p(nb)2 accessi♦ Esegui 2p(nb)3 operazioni fl. p.♦ Riponi nb2 accessi
ijCp)1,...,(kikA =
p)1,...,(kkjB =
kjikijij BACC +=
ijC
![Page 24: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/24.jpg)
24
BLAS A. Murli - Calcolo Scientifico 93
A. MURLI
MFLOPS su un calcolatore SUN Ultra 2 200 MHz
♦ ijk
♦ jki
♦ kij
♦ dgemm
♦ jik
♦ kji
♦ ikj
BLAS A. Murli - Calcolo Scientifico 94
A. MURLI
Basic Linear Algebra Subprograms (BLAS)
BLAS1: operazioni vet-vet (SAXPY, DOT, ...)• nessun riuso dei dati • ottimizzazioni dei compilatori in grado di
sopperire alla mancanza di BLAS1 ottimizzate• efficienza con BLAS1 ottimizzate: < 10%
BLAS2: operazioni mat-vet (GEMV, ...)• riutilizzo di vettori• maggiori difficoltà dei compilatori ad ottimizzare
le operazioni mat-vet• efficienza con BLAS 2 ottimizzate: circa 30%
BLAS A. Murli - Calcolo Scientifico 95
A. MURLI
Basic Linear Algebra Subprograms (BLAS)
BLAS3: operazioni mat-mat (GEMM, ...)• riuso di matrici• 3 loop troppo complessi per le ottimizzazioni dei
compilatori senza suggerimenti • efficienza con BLAS 3 ottimizzato: > 70-80%
BLAS A. Murli - Calcolo Scientifico 96
A. MURLI
LAPACK
Libreria di software matematico per la risoluzione di problemi di algebra lineare su architetture a memoria
gerarchica
Utilizza BLAS 3 come building block
E. Anderson et al., LAPACK User’ Guide, SIAM, 1995
![Page 25: Calcolo Scientifico: II lezione R L I - unina.itmurli/didattica/2005_2006/cs/II... · 2007. 10. 29. · 1 1 A . MU R L I Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006](https://reader035.vdocument.in/reader035/viewer/2022071402/60f1e3c738d767335f17ff73/html5/thumbnails/25.jpg)
25
BLAS A. Murli - Calcolo Scientifico 97
A. MURLI
Algoritmo di Gauss con BLAS, LAPACK..
0x
x
xx
.
.
.
Standard Waysubtract a multiple of a row
0
x
00
. . .
0
LINPACK (BLAS 1)apply sequence to a column
x
nb
BLAS 3a3=a3-a1*a2
a3
a2
a1
L
a2 =L-1 a2
0
x
00
. . .
0
nb LAPACK
Saxpy per riga Saxpy per colonna
BLAS 2BLAS A. Murli - Calcolo Scientifico 98
A. MURLI
FINE LEZIONE !