Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Uvod u GPGPU programiranje

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 29 Publicité
Publicité

Plus De Contenu Connexe

Similaire à Uvod u GPGPU programiranje (20)

Publicité

Plus récents (20)

Uvod u GPGPU programiranje

  1. 1. Uvod u GPGPU programiranje Elektronski fakultet Niš 16.04.2015. dr Dušan Gajić
  2. 2. • Commodore Amiga - 1985. • Nvidia GeForce 256 - 1999. • Industrija video igara • GPU danas: PC, tablet, smartphone, konzole… • Heterogeni računarski sistemi (CPU, GPU, DSP, FPGA…) Kratka istorija GPU brza evolucija GPU
  3. 3. Savremene GPU arhitekture
  4. 4. Manycore arhitekture
  5. 5. 43 51 55 58 86 187 225 225 225 518 576 648 1062 1581 2488 3090 4500 5632 0 1000 2000 3000 4000 5000 6000 2006 2007 2008 2009 2010 2011 2012 2013 2014 moćobrade[GFLOPS] godina CPU GPU Moć obrade CPU i GPU
  6. 6. 10 26 26 32 32 32 51 51 51 90 108 142 159 177 192 192 288 336 0 50 100 150 200 250 300 350 2006 2007 2008 2009 2010 2011 2012 2013 2014 propusniopseg[GB/s] godina CPU GPU Propusnu opseg CPU i GPU
  7. 7. CPU – von Neumannova arhitektura
  8. 8. GPU – SIMD arhitektura
  9. 9. 1. Zahtevaju kompleksna i obimna izračunavanja 2. Omogućavaju značajan paralelizam 3. U većoj meri zavise od propusne moći nego od latencije Problemi pogodni za GPU
  10. 10. Intenzitet izračunavanja CPU GPU
  11. 11. ulazni podaci izračunati rezultati ulazni bafer 1 2 GPU izvršava kernel sa velikim brojem paralelnih niti3 izlazni bafer 4 Rad GPGPU programa
  12. 12. Struktura GPGPU programa
  13. 13. Elementi rada GPGPU programa
  14. 14. 2000 2005 2007 2015 Programski jezici za GPGPU
  15. 15. + visoke performanse + razvijeni alati za programiranje i optimizaciju - radi isključivo na Nvidia GPU + radi na širokom spektru procesora (AMD i Nvidia GPU, DSP, FPGA...) - slabije razvijeni alati i nešto niže performanse programa Programski jezici za GPGPU
  16. 16. • CUDA C i OpenCL C zasnovani na C99 ISO standardu • Specijalne ključne reči i dodatne funkcije za podršku paralelnom programiranju: kernel, global, shared, sync, get_global_id, ... • Određena ograničenja (npr. zabrana rekurzije) i specifičnosti (eksplicitna specifikacija tipa memorije) Programski jezici za GPGPU
  17. 17. Primer: sekvencijalno množenje dva vektora u C-u na CPU void addCPU(int* c, const int* a, const int* b) { unsigned int i; for (i = 0; i < n; i++) { c[i] = a[i] + b[i]; } }
  18. 18. #include “cuda_runtime.h” #include “device_launch_parameters.h” … void main() { … cudaMalloc((void**)&a, size*sizeof(int)); … cudaMemcpy(a, input, size*sizeof(int), cudaMemcpyHostToDevice); … dim3 gridDim(1,1,1); dim3 blockDim(N,1,1); addGPU<<<gridDim, blockDim>>>(c, a, b); cudaMemcpy(c, output, size*sizeof(int), cudaMemcpyDeviceToHost); … } Primer: host CUDA program (CPU)
  19. 19. __global__ void addGPU(int* c, const int* a, const int* b) { const unsigned int tid = threadIdx.x; c[tid] = a[tid] + b[tid]; } Primer: paralelno množenje dva vektora – CUDA na GPU
  20. 20. __kernel void addGPU(__global int* c, __const int* a, __const int* b) { const unsigned int tid = get_global_id(); c[tid] = a[tid] + b[tid]; } Primer: paralelno množenje dva vektora – OpenCL na GPU
  21. 21. • Program domаćina (host) i program uređaja (device) • Kernel opisuje operacije koje realizuje jedna nit • Broj niti po bloku i broj blokova u mreži određuje se u programu domaćina Glavni koncepti kod GPGPU programa
  22. 22. https://www.coursera.org/course/hetero Heterogeneous Parallel Programming https://www.udacity.com/course/cs344 Introduction to Parallel Programming GPGPU MOOC-ovi
  23. 23. http://gpgpu.org/ http://www.gpucomputing.net/ https://developer.nvidia.com/ category/zone/cuda-zone http://developer.amd.com/ resources/ heterogeneous- computing/opencl-zone/ Web resursi
  24. 24. Preporučena literatura - CUDA
  25. 25. Preporučena literatura - OpenCL
  26. 26. Uvod u GPGPU programiranje Elektronski fakultet Niš 16.04.2015. dr Dušan Gajić e-mail: dusan.b.gajic@gmail.com

×