Sunteți pe pagina 1din 26

Tehnici de calcul de înaltă performanță

folosite în modelarea, analiza și optimizarea


dispozitivelor electromagnetice

autor: ing. Laurențiu Duca


coordonator: prof.dr.ing. Daniel Ioan
Concurență și paralelism

• concurență
- două sau mai multe sarcini (task-uri) pot fi
simultan în progres

• paralelism
- două sau mai multe task-uri sunt
executate simultan
Paralelism

• paralelismul datelor
- fiecare procesor execută aceeași sarcină
(task) pe părți de date distribuite diferit

• paralelismul sarcinilor
- fiecare procesor execută un fir de execuție
diferit, pe date identice sau diferite
Indicatori de performanță
• legea lui Amdahl - accelerare paralelă (speedup):
𝑇(𝑛, 1) 1
𝑆 𝑛, 𝑝 = =
𝑇(𝑛, 𝑝) 𝐵 + (1 − 𝐵) 1
𝑝
Indicatori de performanță

Tianhe-2 Nvidia Tesla K20X Intel Xeon E5

Metrica flops 33.9 Pflops 4 Tflops 240 Gflops

flops / Consum 2 Gflops/W 16.8 Gflops/W 2.4 Gflops/W


energetic

Lărgimea de bandă 250 GB/s 60 GB/s


a memoriei
Modele de programare paralelă

• Modelul memoriei partajate


– firele de execuție pot citi și scrie asincron într-o
memorie comună
– sistemele multi-core sau bazate pe plăci GPU

• Modelul bazat pe transmitere de mesaje


– sisteme distribuite
– interfața de comunicare MPI
Arhitectura sistemelor de calcul

• Taxonomia lui Flynn – 4 categorii principale:


– SISD
– MISD
– SIMD
– MIMD
• SPMD
– fiecare procesor poate fi într-un stagiu diferit al execuției
programului
• MPMD
CPU multicore vs GPU

• CPU multicore
– arhitectura MPMD
– execută task-uri f. diferite 
nevoia mecanismelor de control

• GPU
– arhitectura masiv paralelă SIMD
– flexibilitate redusă
Strategia de proiectare
a unui program paralel
OpenCL (Open Computing Language)

• lansat in 2008, gestionat de consorțiul Khronos


• permite crearea de cod masiv paralel, model de
programare similar cu CUDA
• suportă platforme GPU precum Altera, AMD,
Apple, ARM, IBM, Intel, Nvidia, Samsung

• limitare majoră: nu permite utilizarea de funcții


recursive și nici alocarea de memorie dinamică
Compute unified device architecture (CUDA)
Modelul de programare CUDA

• o ierarhie de grupuri de
fire de execuție
denumită grilă (grid),
memorii și mecanisme
de sincronizare

• spațiul de calcul este


cuprins din grilă, blocuri
și fire de execuție
Modelul de memorie CUDA
Execuția unui program CUDA
Modelul de execuție CUDA
CUDA - divergența firelor de execuție
Biblioteci CUDA
• CUBLAS
– implementarea BLAS în CUDA
– folosește stocare după coloană și indexare de la 1

• CUSPARSE, CUFFT, CURAND

• Implementarea LAPACK in CUDA


– CULA, contra cost
– MAGMA, disponibilă gratuit
Dispozitive Nvidia GPU
Nvidia GPU
capabilitate computationala (cc)
- cc < 1.3 => virgulă mobilă doar precizie simplă
- Fermi (cc = 2.x) M2070: 14 unitati SM
SM: 32 CUDA cores (precizie simplă); execută 16
operații în precizie dublă într-o perioadă de ceas
- arhitectura Fermi: primul GPU cu memorie ECC
- Kepler (cc = 3.x) GK110: 15 unitati SMX
SMX: 192 CUDA cores (precizie simplă), 64
unități de calcul în virgula mobilă precizie dublă
- Maxwell (cc = 5.x) proiectată pentru a reduce
consumul de putere
Kepler & Maxwell
- paralelism dinamic: permite
GPU să creeze funcții nucleu
- Hyper-Q: permite 32 de
conexiuni simultane din
stream-uri sau procese
diferite
- GPUDirect: permite
transferul direct de date
între plăcile GPU fara
intervenția CPU
- arhitectura Fermi nu are
aceste proprietăți !
Evoluția plăcilor GPU Nvidia
Evoluția performanței CPU și GPU
Utilizarea CUDA în modelarea și optimizarea
dispozitivelor electromagnetice

• în ultimii ani în literatura de specialitate se


remarcă apariția de lucrări ce utilizează CUDA în
modelarea și optimizarea disp. elmg.

• A. Duca et al. "PSO algorithms and GPGPU


technique for electromagnetic problems", The
13th International Workshop on Optimization
and Inverse Problems in Electromagnetism
(OIPE), 2014.
Optimizare - fcț. de test standard vs
fcț. obiectiv
• fcț. de test standard (ex.: fcț. sferă, Rosenbrock,
Rastrigrin, Griewank, De Jong)
− optimizare complexă (multiple minime locale)
− evaluare rapidă
− nu sunt fcț. CPU intensive (nr. mic de instructiuni, fără
apeluri recursive)

• Fcț. obiectiv (EM)


− optimizare complexă (multiple minime locale)
− timp de evaluare sensibil mai mare
− sunt fcț. CPU intensive (număr mare de instrucțiuni,
ramificări multiple, deseori conțin apeluri recursive)
Implementări paralele ale alg. de
optimizare pe GPU folosind CUDA
• implementarea cu o singură fcț. nucleu și un bloc de fire de execuție
PRO
- nu este nevoie de relansarea fcț. nucleu și există instr. de sincronizare
per bloc
CONTRA
- (posibil) warp-uri multiple per bloc
- nr. max de particule 1024 = nr. max fire de execuție per bloc
- divergența ramificării

• implementarea cu multiple fcț. nucleu și număr variabil de blocuri


PRO
- nr. max de particule nu este limitat la 1024
- evitarea divergenței ramificării pt. config. cu 1 fir de execuție per bloc
CONTRA
- pauze datorate relansării funcțiilor nucleu (pt. sincronizare)
- divergența ramificării pt. multiple fire de execuție per bloc
Concluzii
• în cadrul referatului au fost prezentate sisteme si
tehnici de calcul de înaltă performanță folosite în
modelarea, analiza și optimizarea dispozitivelor
electromagnetice
• paradigma de proiectare se schimbă datorită
trecerii de la clustere CPU la clustere și sisteme
cu dispozitive GP-GPU

• tehnologia openCL este disponibilă pe toate


arhitecturile GPU, dar are limitări importante
• Nvidia CUDA este cea mai utilizată tehnologie
pentru implementarea pe dispozitivele GPU,
oferind și biblioteci specializate de calcul

S-ar putea să vă placă și