GP-GPU
GP-GPU predstavlja skraćenicu (General Purpose Graphics Processing Unit) za grafički procesor koji se može programirati kao procesor opšte namene. Integracija GPU-a i CPU-a je samo jedna strana medalje. Za razliku od Intelovih GMA grafičkih čipova, Radeon GPU se može koristiti kao koprocesor za generalnu namenu. Svi Radeon GPU-ovi počev od RV7xx generacije, pa i ranije, su programabilni u opštem smislu.
AMD i „open source“ zajednica uveliko rade na bibliotekama za podršku za GPGPU procesiranje. RV7xx je prva generacija ATi-jevih GPU-ova koja podržava OpenCL standard. Kod Intelovih integrisanih GPU-ova postoje određene fiksne funkcije za rad sa video materijalom, tj. njegovo enkodovanje, ali nema govora o bilo kakvoj HPC (high performance computing) primeni. Ono što je najzanimljivije od svega je to što ukoliko instalirate AMD APP-AMD Parallel Processing biblioteku(bivša ATi Stream biblioteka), možete na vašem procesoru da izvršavate OpenCL kod. Kombinacijom korišćenja procesora i GPU-a dobija se višestruko ubrzanje u OpenCL baziranim aplikacijama. Ovo je moguće zahvaljujući specijalno razvijenom kompajleru koji generiše ciljni kod i za GPU i za CPU.
Kod koji je generisan podržava visok stepen paralelizma podataka. Na procesoru se izvršava koristeći SIMD SSE2/3 i novije vektorske instrukcije. Može se reći da je ovakav kod visoko optimizovan, kako za CPU, tako i za GPU. Da bi shvatili vrednost ovog softverskog rešenja, moramo da shvatimo kako rade procesori i grafički čipovi. Procesor je proizveden tako da efikasno izvršava skalarni kod, kod koji je pun grananja i kontrole toka, dok je s’ druge strane GPU proizveden tako da efikasno izvršava veliki broj operacija nad paralelizovanim podacima. Iskorišćenje oba daje najbolje iz svetova CPU-ova i GPU-ova. Na slici je prikazan lanac generisanja OpenCL koda uz pomoć AMD APP SDK.
OpenCL biblioteka sadrži kompajlerski deo koji se zove LLVM – Low Level Virtual Machine. Izvršni fajl koji je kompajliran koristi dinamički deo iz OpenCL biblioteke, koji vrši raspodelu izvršavanja na x86 procesor i GPU, preko odgovarajućeg drajvera.
Na sledećim slikama je ilustrovano paralelno izvršavanje LuxRender-a na GPU i CPU. Na slici levo je pokrenuto izvršavanje OpenCL programa na Intel Core i3 procesoru sa integrisanom GMA grafikom, dok je na slici desno pokrenut render na AMD A8 3850 APU.
Primene OpenCL-a i GPGPU programiranja su mnogobrojne, počev od video enkodovanja i Ray Tracing-a, preko softvera za prepoznavanje lica, enkripcije i dekripcije podataka uz korišćenje AES, RSA, SHA i MD5 Hash algoritama, pa sve do digitalne obrade signala (izvršavanjem FFT – Brzih Furijerovih Transformacija-a – Folding@Home). U svim ovim primenama vrši se obrada nad paralelizovanim podacima.
Dodaj komentar