[JUG] JCuda

Click here to load reader

  • date post

    12-Aug-2015
  • Category

    Technology

  • view

    224
  • download

    3

Embed Size (px)

Transcript of [JUG] JCuda

  1. 1. JCuda Czy Java i CUDA mog si polubi? Konrad Szakowski
  2. 2. GPU Dlaczego warto uywa GPU Budowa GPU CUDA JCuda Przykadowa implementacja Agenda
  3. 3. GPU Co to jest?
  4. 4. Graphical GPU
  5. 5. Graphical Processing GPU
  6. 6. Graphical Processing Unit GPU
  7. 7. GPU Graphical Processing Unit Procesor graficzny.
  8. 8. Krtka historia GPU Terminale znakowe
  9. 9. Krtka historia GPU Terminale znakowe Renderowanie obrazu skadajcego si z pixeli
  10. 10. Krtka historia GPU Terminale znakowe Renderowanie obrazu skadajcego si z pixeli Akceleracja 2D, rysowanie ksztatw, Z-bufory, sprite'y.
  11. 11. Krtka historia GPU Wejcie w wiat 3D - obliczenia na wektorach macierzach liczb zmiennoprzecinkowych
  12. 12. Krtka historia GPU Wejcie w wiat 3D - obliczenia na wektorach macierzach liczb zmiennoprzecinkowych Pojawienie si pierwszego GPU - NV10. Karta graficzna przeja obliczenia T&L.
  13. 13. Krtka historia GPU Wejcie w wiat 3D - obliczenia na wektorach macierzach liczb zmiennoprzecinkowych Pojawienie si pierwszego GPU - NV10. Karta graficzna przeja obliczenia T&L. Pojawienie si shaderw. Krtkich programw operujcych na danych wewntrz karty graficznej. (NV30)
  14. 14. Krtka historia GPU Wejcie w wiat 3D - obliczenia na wektorach macierzach liczb zmiennoprzecinkowych Pojawienie si pierwszego GPU - NV10. Karta graficzna przeja obliczenia T&L. Pojawienie si shaderw. Krtkich programw operujcych na danych wewntrz karty graficznej. (NV30) Pojawienie si CUDA - dowolne programowanie na GPU (G80).
  15. 15. Dlaczego warto uywa GPU Architektura procesora graficznego jest zoptymalizowana pod ktem oblicze zmiennoprzecinkowych.
  16. 16. Dlaczego warto uywa GPU Architektura procesora graficznego jest zoptymalizowana pod ktem oblicze zmiennoprzecinkowych. Wydajno tego typu oblicze jest a do 5 razy wiksza ni CPU, w przypadku oblicze podwjnej skali precyzji.
  17. 17. Dlaczego warto uywa GPU Architektura procesora graficznego jest zoptymalizowana pod ktem oblicze zmiennoprzecinkowych. Wydajno tego typu oblicze jest a do 5 razy wiksza ni CPU, w przypadku oblicze podwjnej skali precyzji. I a do 10 razy w przypadku pojedynczej skali precyzji.
  18. 18. Dlaczego warto uywa GPU Prdko pamici DDR3-19200 ~ 19,2 GB/s
  19. 19. Dlaczego warto uywa GPU Prdko pamici DDR3-19200 ~ 19,2 GB/s GDDR5 ~ 224 GB/s
  20. 20. Dlaczego warto uywa GPU Prdko pamici DDR3-19200 ~ 19,2 GB/s GDDR5 ~ 224 GB/s Wydajno mocy Intel i7 Core 980XE: 220 GFLOPS / 130W = 1,7 GFLOPS/W
  21. 21. Dlaczego warto uywa GPU Prdko pamici DDR3-19200 ~ 19,2 GB/s GDDR5 ~ 224 GB/s Wydajno mocy Intel i7 Core 980XE: 220 GFLOPS / 130W = 1,7 GFLOPS/W NVIDIA GTX 580: 1580 GFLOPS / 244 W = 6,5 GFLOPS/W
  22. 22. Dlaczego warto uywa GPU rdo:http://www.hardwareinsight.com/
  23. 23. Dlaczego warto uywa GPU CPU GPU Core 2 Duo Quad Q6600 2,4GHz 4GB DDR2-800 NVidia GeForce GTX470 1296 MB GDDR5
  24. 24. Dlaczego warto uywa GPU CPU GPU Core 2 Duo Quad Q6600 2,4GHz 4GB DDR2-800 NVidia GeForce GTX470 1296 MB GDDR5 Raytracer 4-8 FPS 80 FPS
  25. 25. Dlaczego warto uywa GPU CPU GPU Core 2 Duo Quad Q6600 2,4GHz 4GB DDR2-800 NVidia GeForce GTX470 1296 MB GDDR5 Raytracer 4-8 FPS 80 FPS SGEMM 1000x1000 5924 ms 528 ms
  26. 26. Dlaczego warto uywa GPU CPU GPU Core 2 Duo Quad Q6600 2,4GHz 4GB DDR2-800 NVidia GeForce GTX470 1296 MB GDDR5 Raytracer 4-8 FPS 80 FPS SGEMM 5924 ms 528 ms Sort 10^6 43 ms 547 ms Sort 10^8 1000 ms 800 ms
  27. 27. Do czego uyto GPU Symulacje objtociowe cieczy i gazw
  28. 28. Do czego uyto GPU Symulacje objtociowe cieczy i gazw Optymalizacja wydajnoci aerodynamicznej pojazdw
  29. 29. Do czego uyto GPU Symulacje objtociowe cieczy i gazw Optymalizacja wydajnoci aerodynamicznej pojazdw Analiza pogody
  30. 30. Do czego uyto GPU Symulacje objtociowe cieczy i gazw Optymalizacja wydajnoci aerodynamicznej pojazdw Analiza pogody Wizualizacje
  31. 31. Do czego uyto GPU Symulacje objtociowe cieczy i gazw Optymalizacja wydajnoci aerodynamicznej pojazdw Analiza pogody Wizualizacje Symulacja detonacji atomowej bomby plecakowej
  32. 32. Do czego uyto GPU Symulacje objtociowe cieczy i gazw Optymalizacja wydajnoci aerodynamicznej pojazdw Analiza pogody Wizualizacje Symulacja detonacji atomowej bomby plecakowej Problem n cia i wiele innych.
  33. 33. Gdzie GPU, bdzie skuteczne Algorytmy przetwarzania rwnolegego
  34. 34. Gdzie GPU, bdzie skuteczne Algorytmy przetwarzania rwnolegego Mao komunikacji midzy wtkowej
  35. 35. Gdzie GPU, bdzie skuteczne Algorytmy przetwarzania rwnolegego Mao komunikacji midzy wtkowej Masowe obliczenia zmienno przecinkowe SP
  36. 36. Zapraszam http://www.nvidia.pl/object/cuda_apps_flash_pl.html
  37. 37. GPU Pikne liczby, powoduj dreszcze, ale gdzie jest haczyk?
  38. 38. GPU Pikne liczby, powoduj dreszcze, ale gdzie jest haczyk? Wtki.
  39. 39. GPU Pikne liczby, powoduj dreszcze, ale gdzie jest haczyk? Wtki. Duo wtkw.
  40. 40. GPU Pikne liczby, powoduj dreszcze, ale gdzie jest haczyk? Wtki. Duo wtkw. Nawet 2^9 * 2^32 wtkw.
  41. 41. CPU DRAM
  42. 42. CPU DRAM Cache
  43. 43. CPU CONTROL DRAM Cache
  44. 44. CPU CONTROL DRAM Cache ALU ALU ALU ALU ALU ALU
  45. 45. GPU DRAM
  46. 46. GPU DRAM
  47. 47. GPU DRAM
  48. 48. GPU DRAM Cache CONT ROL Cache CONT ROL Cache CONT ROL Cache CONT ROL
  49. 49. GPU DRAM Cache CONT ROL ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU Cache CONT ROL ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU Cache CONT ROL ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU Cache CONT ROL ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU
  50. 50. GPU Pikne liczby, powoduj dreszcze, ale gdzie jest haczyk? Wtki. Duo wtkw. Ok. 2^24 * 2^32 wtkw. Pami. Zarzdzanie. Transfer. Optymalne wykorzystanie.
  51. 51. GPU DRAM
  52. 52. GPU DRAM Pami tekstur Pami staych
  53. 53. GPU DRAM Cache staychCache tekstur Pami tekstur Pami staych
  54. 54. GPU DRAM Pami instrukcji Cache staychCache tekstur Procesor Procesor Procesor Procesor Pami tekstur Pami staych
  55. 55. GPU DRAM Pami instrukcji Cache staychCache tekstur Procesor Procesor Procesor Procesor Rejestry Rejestry Rejestry RejestryRejestry Pami tekstur Pami staych
  56. 56. GPU DRAM Pami instrukcji Cache staychCache tekstur Procesor Procesor Procesor Procesor Rejestry Rejestry Rejestry Rejestry Pami wspdzielona Rejestry Pami tekstur Pami staych
  57. 57. CUDA Compute Unified Device Architecture
  58. 58. CUDA Cytujc stron NVidii: CUDA jest opracowan przez firm NVIDIA, rwnoleg architektur obliczeniow, ktra zapewnia radykalny wzrost wydajnoci oblicze dziki wykorzystaniu mocy ukadw GPU (graphics processing unit jednostka przetwarzania graficznego).
  59. 59. CUDA Jest to rwnie synonim rozszerzenia standardowego jzyka C o skadni i biblioteki potrzebne do wygodnego przeprowadzania oblicze na kartach graficznych.
  60. 60. JCuda Zestaw bibliotek opakowywujcych natywne biblioteki CUDY z wykorzystaniem interfejsu JNI. Niestety, zalene od systemu operacyjnego/architektury procesora.
  61. 61. JCuda CUDA DRIVER API CUDA RUNTIME API
  62. 62. libJCudaDriver.so libJCudaRuntime.so JCuda CUDA DRIVER API CUDA RUNTIME API
  63. 63. libJCudaDriver.so libJCudaRuntime.so JCuda CUDA DRIVER API CUDA RUNTIME API JCudaRuntime.jar JCudaDriver.jar
  64. 64. Jk zawodu na sali Niestety, zalene od systemu operacyjnego/architektury procesora.
  65. 65. Jk zawodu na sali Niestety, zalene od systemu operacyjnego/architektury procesora. Naley jednak pamita, e API CUDY plus biblioteki to ok. 2500 rnych funkcji zmieniajcych si z kadym wydaniem.
  66. 66. Co to jest kernel? Funkcja adowana do pamici instrukcji multiprocesora.
  67. 67. Co to jest kernel? Funkcja adowana do pamici instrukcji multiprocesora. Przykad JCudaVectorAdd.cu: extern "C" __global__ void add(int n, float *a, float *b, float *sum) { int i = blockIdx.x * blockDim.x + threadIdx.x; if (i
  68. 68. Organizacja przetwarzania struct dim3 { int x, y, z; } dim3 gridDim, blockDim; dim3 blockIdx, threadIdx;
  69. 69. Organizacja przetwarzania Blok WtekWtek Wtek Wtek WtekWtek Wtek Wtek WtekWtek Wtek Wtek WtekWtek Wtek Wtek WtekWtek Wtek Wtek WtekWtek Wtek Wtek WtekWtek Wtek Wtek WtekWtek Wtek Wtek WtekWtek Wtek Wtek WtekWtek Wtek Wtek WtekWtek Wtek Wtek WtekWtek Wtek Wtek WtekWtek Wtek Wtek WtekWtek Wtek Wtek WtekWtek Wtek Wtek WtekWtek Wtek Wtek
  70. 70. Organizacja przetwarzania Kady blok moe zosta przydzielony do dowolnego multiprocesora. To w jaki sposb zostanie on przydzielony zaley od jego wymaga co do pamici wspdzielonej oraz rejestrw.
  71. 71. Organizacja przetwarzania Grid BlokBlok Blok Blok BlokBlok Blok Blok BlokBlok Blok Blok
  72. 72. Ograniczenia przetwarzania Ograniczenia: Maksymalna ilo wtkw w bloku: 512 (256). Maksymalny wymiar grida 2^16 x 2^16 x 1. Do niedawna brak rekurencji. Do niedawna brak printf.
  73. 73. Ograniczenia przetwarzania Wtki w bloku formowane s w tzw. warpy po 32 wtki kady i nastpnie s adowane do multiprocesora. W ramach jednego warpa rwnolegle przez wtki moe by wykonywana tylko jedna instrukcja. Jeli nastpi rozgazienie (if) zasada ta nadal obowizuje i instrukcje gazi si przeplataj.
  74. 74. Typowy przebieg przetwarzania 1. Przygotow