inmultire matrici- optimizare

Upload: gabi-munteanu

Post on 08-Jul-2015

845 views

Category:

Documents


0 download

TRANSCRIPT

12/20/2010View Edit History Print

ASC Lab Wiki - Laboratorul 5

Laboratorul 5On this page ... (hide) 1.De ce inmultirea matricelor? 2.Cel mai simplu algoritm 2.1Cat de bun este acest algoritm? 3.Optimizarea algoritmului de inmultire a doua matrice HomePage WikiSandbox Text Formatting Rules 3.1Detectarea constantelor din bucle 3.2Accesul la vectori 3.3Activitate practica - Optimizare constantelor si al accesului la vectori 3.4Optimizarea pentru accesul la memorie 3.5Activitate practica - Ordinea buclelor 3.6Solutia: Blocked Matrix Multiplication 4.In loc de concluzie 4.1Activitate practica - BMM & Optimizare pentru Cache 5.Documentatie

PythonLaboratorul 1 Laboratorul 2 Laboratorul 3

Arhitecturi & Optimizari de CodLaboratorul 4 Laboratorul 5

Tehnici de Optimizare de Cod Inmultirea Matricelor1. De ce inmultirea matricelor?Este o operatie fundamentala si elementara in algebra liniara ce serveste la rezolvarea unui numar extrem de mare de probleme, cum ar fi: rezolvarea sistemelor liniare de ecuatii in majoritatea domeniilor stiintifice si economice (operatiile cu matrice sunt practic prezente pretudindeni); calcule si operatii cu grafuri; inversari de matrice. Problema inmultirii matricelor este in mod cert cea mai bine studiata problema in HPC (High Performance Computing), ea beneficiind de o multitudine de algoritmi inteligenti si implementari performante pe toate (putem spune asta fara nici un risc) arhitecturile existente astazi. In acest laborator, pentru a simplifica lucrurile, ne vom ocupa doar de inmultirea matricelor patratice.

Cell/B.E.Laboratorul 6 Laboratorul 7 Laboratorul 8 Laboratorul 9 Laboratorul 10 Laboratorul 11

2. Cel mai simplu algoritmLaborator GPULaboratorul 12

Intuitiv, cel mai simplu algoritm, urmeaza formularea matematica:

Cell CookbooksKickstart Cell Cell Blade ca target pentru Eclipse Mailbox Hands-On DMA 101

Cell Reference GuideReference Manualsedit Si deBar

Matricele A rezultat

= [aij], i,j=1,...,N

si

B = [bij], i,j=1,...,N

sunt salvate ca vectori bidimensionali de marime N x N. Matricea

C = A x B = [cij], i,j=1,...,N

, avand fireste aceeasi dimensiune.

Search:

Go

Cum este si de asteptat, similar cu majoritatea operatiilor din algebra liniara, formula de mai sus se transforma in urmatorul program extrem de simplu:int i,j,k; double a[N][N], b[N][N], c[N][N];

ncit-cluster.grid.pub.ro//Laboratorul5

1/7

12/20/2010

ASC Lab Wiki - Laboratorul 5// initializarea matricelor a si b for (i=0;i