25
1 1 A. MURLI Calcolo Scientifico: II lezione Luisa D’Amore a.a. 2005-2006 BLAS A. Murli - Calcolo Scientifico 2 A. MURLI Problema: 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 flops 200 K words 200 M words 1970 6 G flops 50 M words 500 G words 1995 10 Tera flops 100 G words 1 Peta words 2010 Intel 4004 IBM RS/6000 SP IBM® Power 3® ASCII Red CRAY 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

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 !