Aici incep o serie de articole cu noutati din
activitatea de practica de anul acesta; anul trecut nu am facut acest lucru si mi-a parut rau, pentru ca unele lucruri s-au cam "uitat" si intotdeauna e bine sa
scrii acolo ce faci, decat sa te bazezi doar pe memorie :) De asemenea, practica de anul acesta aduce cu sine concepte noi si intr-o oarecare masura transmise pe "cale orala" - un motiv in plus ca sa consemnez cate ceva... inca un lucru pe care l-am observat de cand am deschis acest blog a fost ca orice lucru pe care l-am postat a insemnat sa imi dau interesul
mai mult (pentru el) decat o faceam in mod obisnuit.
-------------------------------------- //// --------------------------------------------
In primele 3 zile se vor dezvolta notiuni teoretice, urmand ca in urmatoarele 2 saptamani sa se faca aplicatii. Tema practicii:
Workflow Heterogeneous Computing - calcul heterogen (pe CPU-uri si GPU-uri), OpenCL .
Meniul de astazi se poate gasi
aici, iar eu le voi lua pe rand, in 2-3 cuvinte despre fiecare:
* Description CPU. Current CPU technologies.CPU = central processing unit;
- roluri: citire, interpretare & executie de instructiuni (operatii aritmetice, logice si de I/E)
- parametri: nr.de nuclee, frecventa, GFlops (nr de giga-floating operations), diametru, nr. tranzistori, registri si dimensiunea lor, cache-uri: L1, L2, L3, FSB (front side bus), CPU socket;
- cresterea performantei prin scaderea diametrului & cresterea frecventei;
- de la frecvente mai mari de 4GHz/procesor, eficienta scade in primul rand prin consumul ridicat de putere (costuri mari) + zgomot mai mare
- tehnologii: multicore & hyper threading. Hyper threading: sistemul de operare vede un singur procesor hyper-threaded ca 2 CPU-uri logice separate, avantajul fiind o planificare mai eficienta, nucleul este tinut ocupat cat de mult posibil.
* SISD paradigm. Singlecore vs Multicore vs Manycore.SISD = single instruction, single data; executie secventiala, un procesor ~ o instructiune ~ un singur flux de date
- singlecore: un sistem cu un singur nucleu
- multicore: mai multe nuclee independente pe acelasi soclu, un CPU dual core va executa mai repede decat un CPU hyper-threaded; un CPU multicore poate fi si hyper-threaded
- manycore: un procesor cu zeci, sute, sau mii de nuclee
* MMX & SSE & AVX brief intro. Architecture differences (Netburst vs Core).MMX, SSE, AVX, x86_64, 3DNow - tipuri de instructiuni
- MMX = "multimedia extension"
- SSE = "streaming SIMD extensions" (replica lui Intel la 3DNow al lui AMD) = noi instructiuni pt DSP si procesare grafica
- AVX = "advanced vector extensions"
* Architecture evolution (K8; K10.5, Prescott; Ivy Bridge)
* Benchmarking. Examples SuperPi, SySandra, Lappack, PCMark.
* Performance discussion.
* Important factors in current CPU performance
* CPU frequency vs CPU core count.Un CPU de frecventa 4 GHz poate fi inlocuit cu 2 nuclee de 2 GHz, performanta este
aproape aceeasi (putin mai buna la un singur nucleu), insa consumul este mai favorabil in cazul a 2 nuclee.
* Utilities presented :
CPU-Z.
a) When singlecore / multicore ? When many core ?- singlecore: aplicatii banale (Notepad)
- multicore: aplicatii atat de calcul cat si de preluare date de la dispozitive I/E, un browser cu mai multe tab-uri, Skype-ul (?)
- manycore: calculatoarele de top
b) Memory hierarchy. Why L1? Why L2? Why L3? Problems.Ierarhie: registri, L1, L2, L3, RAM, HDD, cloud.....
- L1: tip SRAM, mare viteza, dimensiune mica, datele, instructiunile separat + TLB
- L2: dimensiune mai mare decat L1
- L3: optional
Probleme: cache-miss-uri, politica de inlocuire?
c) Check with CPU-Z and describe an architecture.- nu am hyper-threading :(
- nu am instructiuni de tip AVX
- core speed este ajustat in functie de necesitatile sistemului
- 3 nuclee inseamna de fapt 4, unul fiind dezactivat din fabricatie (costa putin nucleul propriu zis, ajustarea arhitecturii este costisitoare. Motivul: o gama mai variata de preturi)
* Description GPU. Comparison with CPUGPU = graphical processing unit
Parametri pt o placa video: producator (Nvidia, ATI), frecventa procesor, dimensiune, tip si frecventa memorie, latime magistrala (bus width), bandwidth, etc.
- CPU-ul este pentru calcule generale, iar GPU este strict specializat pe calcule ce tin de grafica, paralelism masiv
- CPU are un set de instructiuni mai bogat
- un GPU poate fi asezat in 3 locuri: pe placa de baza, pe acelasi soclu cu CPU-ul sau integrat cu CPU-ul
- GPU-ul lucreaza cu datele din memoria proprie VRAM, daca datele lipsesc, CPU-ul este cel care ii trimite datele din RAM (transfer costisitor); GPU nu poate comanda (cere) ceea ce ii lipseste;
- GPU = stream processor, 1 stream = {vertex, pixel, geometrical} ; vertex ~ modelare, pixel ~ efecte;
- frecventele GPU sunt mai mici decat cele ale CPU, deci consuma mai putina putere
* Memory hierarchy CPU vs GPU- GPU nu are cache-uri, poate avea memorie locala pentru fiecare unitate de calcul
* Types of GPU. Discrete (PCI, AGP, PCIe) & Integrated (IGP, APU)Discrete:
- PCI = "peripheral component interconnect", pentru placi de retea, sunet, modem, porturi USB/seriale, controllers de disc, etc. Nu prea se mai foloseste pt placi video din cauza cresterii latimii de banda, se vor folosi AGP si PCI Express.
- AGP = "accelerated graphics port" - canal de viteza inalta pt conectarea unei placi video la placa de baza.
- PCIe = "PCI Express" (2004) - inlocuieste PCI si AGP;
Integrate:
- IGP = "integrated graphics processor" - sunt de dimensiune limitata, nu pot avea cooler, nu au aceeasi performanta ca placile video, nu pot fi upgradate, solutie buna pt laptop-uri.
- APU = "accelerated processing unit" - poate include GPU-uri, FPGA-uri, etc; rata de transfer intre CPU si GPU este imbunatatita, consum redus.
* GPU evolution. Pipeline vertex/pixel; stream unitsInainte existau core-uri GPU specializate pt calcule de modelare (vertex) sau de efecte (pixel), dezavantajul era ca atunci cand se efectuau calcule de modelare, core-urile specializate pe efecte stateau degeaba; prin stream units, toata lumea face ceva la un moment dat...
* SIMD paradigm. Nvidia architecture evolution ( 5 series; fermi/kepler)Fermi = arhitectura CUDA de la Nvidia, prima arhitectura completa pt GPU computing, pt HPC (high performance computing)
* Amd architecture evolution ( 9 series ; evergreen/southern island)
* IGP evolution. Intel IGPs, Nvidia & Amd IGPs.
* Benchmarking. 3dmark 2005/2006/vantage.
* Forceware & Catalyst drivers. Differences.Forceware - driverul de la Nvidia
Catalyst - driverul de la ATI
Un driver Forceware nu poate face ca o placa video ATI sa fie recunoscuta, nici invers.
* Presentation. MultiGPU configurations.
* SLI vs Crossfire vs Lucid. Scalability discussion.
* Utilities presented :
GPU-Za) When CPU ? When GPU ?
b) Inspect a GPU with GPU-Z. Describe.- nu suporta OpenCL, Cuda, DirectCompute...
- bus width de 32 de biti limiteaza serios performanta (chiar daca bandwidth e de 3.2 GBps)
- bus interface este PCI (un pic deprecated)
c) APU GPU vs Discrete GPU ?In cazul APU GPU (GPU integrat), latimea de banda cu memoria RAM trebuie sa fie suficient de mare cat sa nu tina pe loc GPU-ul care este mai rapid decat un CPU. GPU are nevoie de un flux de mare de date, cat mai rapid. O mare parte din intarzieri este eliminata deoarece datele vin direct din RAM si nu trec din RAM in North Bridge si de acolo in VRAM-ul placii video (cazul Discrete GPU).