Documente Academic
Documente Profesional
Documente Cultură
• Concluzii
Strategia de proiectare
a unui program paralel
Tehnici de descompunere
(1)
• Împărțirea problemei computaționale
în părți mai mici, din care toate sau o
parte pot fi executate în paralel
• Descompunerea recursivă
– Utilizând strategia împarte-și-stăpânește,
o problemă este rezolvată prin aplicarea
recursivă a unei divizii similare în
subprobleme mai mici, urmate de
combinarea rezultatelor acestora
Tehnici de descompunere
(2)
• Descompunerea datelor
– datele pe care se vor efectua calculele sunt
partiționate
– fiecărui task îi este asignată munca de calcul a
unei porțiuni
– ex: alg. pe matrici (înmultire matrice-vector,
matrice-matrice).
• Descompunerea explorativă
– utilizată pentru a descompune probleme ale
căror computații corespund unui spațiu de
căutare a soluțiilor
– task-urile neterminate pot fi terminate imediat ce
o soluție a fost găsită de unul dintre task-uri
Tehnici de descompunere
(3)
• Descompunerea speculativă
– utilizată când un program poate lua una din
multiple ramificații posibile
– scenariu similar cu evaluarea în paralel a
ramificațiilor unei instrucțiuni de tipul switch/case,
înainte ca datele de intrare ale instructiunii să fie
disponibile
• Descompunerea hibridă
– deseori, o computație este structurată din
multiple stagii și este uneori necesara aplicarea a
mai multor tipuri de descompuneri, în diferite
stagii
Problema de benchmark
TEAM22
• constă în optimizarea unui dispozitiv SMES
• configurație SMES care are doi solenoizi prin care
trec curenți de sensuri opuse
• obiective:
- energia magnetică
stocată sa fie 180 MJ
- câmpul de dispersie
(la 10 m) să fie minim
- câmpul magnetic să
satisfacă condiția ce
garantează
supraconductibilitatea
TEAM22 (2)
• restricții: R1
[m]
R2
[m]
h1/2
[m]
h2/2
[m]
d1
[m]
d2
[m]
J1
[MA/
J2
[MA/
m 2] m 2]
min 1.0 1.8 0.1 0.1 0.1 0.1 10.0 -30.0
max 4.0 5.0 1.8 1.8 0.8 0.8 30.0 -10.0
6000
5000
4000
3000 TEAM22-rapid
TEAM22-original
2000
1000
0
0 5 10 15 20 25
SPSO iteration
TEAM22 – EnergieProprie(1)
• for(i=0;i<=n;i++)
• {
• r0=rsp-dsp/2+i*dsp/n;
• for(j=0;j<=m;j++)
• {
• z0=zsp+j*hsp/(2*m);
• d[0]=r0-(rsp-dsp/2); d[1]=(rsp+dsp/2)-r0;
• h[0]=z0-(zsp-hsp/2); h[1]=(zsp+hsp/2)-z0;
• r0A=0;
• if(i>0)
• {
• r0A+=AbaraDep(r0,z0,r0-d[0]/2,z0-h[0]/2,d[0],h[0],DstEtalon2,interp,EI, KI, Step, From);
• if(j<m)
• r0A+=AbaraDep(r0,z0,r0-d[0]/2,z0+h[1]/2,d[0],h[1],DstEtalon2,interp,EI, KI, Step, From);
• }
• if(i<n)
• {
• r0A+=AbaraDep(r0,z0,r0+d[1]/2,z0-h[0]/2,d[1],h[0],DstEtalon2,interp,EI, KI, Step, From);
• if(j<m)
• r0A+=AbaraDep(r0,z0,r0+d[1]/2,z0+h[1]/2,d[1],h[1],DstEtalon2,interp,EI, KI, Step, From);
• }
• EP+=ArieRel(i,j,n,m)*r0A;
• }
• }
TEAM22 – EnergieProprie(2)
• // pthread_create
• int tid = 0;
• for(i=0;i<=n;i++)
• {
• r0=rsp-dsp/2+i*dsp/n;
• for(j=0;j<=m;j++)
• {
• z0=zsp+j*hsp/(2*m);
• d[0]=r0-(rsp-dsp/2); d[1]=(rsp+dsp/2)-r0;
• h[0]=z0-(zsp-hsp/2); h[1]=(zsp+hsp/2)-z0;
• //r0A=0;
• if(i>0)
• {
• tid++;
• vtid[tid] = tid;
• vabara[tid].r0=r0; vabara[tid].z0=z0; vabara[tid].rsp=r0-d[0]/2;vabara[tid].zsp=z0-h[0]/2;
vabara[tid].dsp=d[0]; vabara[tid].hsp=h[0];
• vabara[tid].dstEtalon=DstEtalon2; vabara[tid].interp=interp; vabara[tid].EI=EI;
vabara[tid].KI=KI; vabara[tid].Step=Step; vabara[tid].From=From;
• if(pthread_create(&vthreads[tid], NULL, &callABaraDep, &vtid[tid])) {
• perror("pthread_create");
• exit(1);
• }
• ...
TEAM22 – EnergieProprie(3)
• // pthread_join
• tid = 0;
• for(i=0;i<=n;i++)
• {
• r0=rsp-dsp/2+i*dsp/n;
• for(j=0;j<=m;j++)
• {
• z0=zsp+j*hsp/(2*m);
• d[0]=r0-(rsp-dsp/2); d[1]=(rsp+dsp/2)-r0;
• h[0]=z0-(zsp-hsp/2); h[1]=(zsp+hsp/2)-z0;
• r0A=0;
• if(i>0)
• {
• tid++;
• // wait for completion
• if (pthread_join(vthreads[tid], NULL))
• perror("pthread_join");
• r0A+=abararet[tid];
(modif.)
din testarea electromagnetică
•specimen: onedistructivă
placă din material
conductor, de formă paralelipipedică
40x40x1.25mm3
și conductivitate
=106S/m, ce conține un
defect
2.5
2
magma_zgetrf_gpu()
1.5 lapackf77_zgetrf()
1
0.5
0
0 1000 2000 3000 4000 5000 6000
Dimensiunea matricei
NDET – magma vs lapack:
zgetrf (2)
250
Timp (s)
200
150
magma_zgetrf_gpu()
100
lapackf77_zgetrf()
50
0
0 5000 10000 15000 20000
Dimensiunea matricei
NDET – magma vs lapack:
zgetrs
5
Timp (s)
4.5
3.5
2.5
magma_zgetrs_gpu()
2
lapackf77_zgetrs()
1.5
0.5
0
0 2000 4000 6000 8000 10000 12000 14000 16000
Dimensiunea matricei
Concluzii
• în acest referat au fost prezentate tehnici de
calcul de înaltă performanță folosite pentru
evaluarea rapidă a funcțiilor obiectiv