OpenCL

Akceleracja GPU w praktyce

2 oceny

Format:

epub, mobi, ibuk

DODAJ DO ABONAMENTU

WYBIERZ RODZAJ DOSTĘPU

57,60  64,00

Format: epub, mobi

 

Dostęp online przez myIBUK

WYBIERZ DŁUGOŚĆ DOSTĘPU

Cena początkowa: 64,00 zł (-10%)

Najniższa cena z 30 dni: 32,00 zł  


57,60

w tym VAT

TA KSIĄŻKA JEST W ABONAMENCIE

Już od 24,90 zł miesięcznie za 5 ebooków!

WYBIERZ SWÓJ ABONAMENT

Książka jest skierowana do programistów, którzy chcą się zapoznać z technologią OpenCL W publikacji duży nacisk został położony na przedstawienie konkretnych przykładów (wraz z komentarzem opisującym sposób implementacji danego przykładu oraz techniczne aspekty danego problemu). Zaprezentowane zostały także sposoby wykorzystywania OpenCL do realizacji różnych zadań obliczeniowych. Praktyczne przykłady obejmują zagadnienia m.in. z algebry liniowej. W książce znajdują się także przykłady przetwarzania grafiki. Ze względu na charakter OpenCL opisano również sposoby korzystania z możliwości OpenCL oferowanych przez różne dodatkowe biblioteki, a także pakiety ułatwiające współpracę z technologią OpenCL. Uzupełnieniem publikacji są bardziej zaawansowane przykłady rozwiązywania równań różniczkowych czy też przedstawienie metody Black Scholes.
Z książki można nauczyć się, jak: – korzystać z technologii OpenCL; – tworzyć własne jądra obliczeniowe; – przetwarzać grafikę za pomocą wbudowanych możliwości OpenCL.
Dobrze jest znać: – wybrane pojęcia algebry liniowej, m.in. macierze, wektory; – podstawy języków C, C++ oraz Python; – środowisko IDE, np. Visual Studio. Choć nie jest to książka przeznaczona dla początkującego czytelnika i wymaga umiejętności programowania na poziomie średnim, to zawarte w niej informacje z pewnością pozwolą na zapoznanie się z technologią OpenCL i możliwościami obliczeniowymi, jakie ona oferuje.


Rok wydania2014
Liczba stron344
KategoriaProgramowanie
WydawcaWydawnictwo Naukowe PWN
ISBN-13978-83-01-18045-4
Numer wydania1
Język publikacjipolski
Informacja o sprzedawcyePWN sp. z o.o.

INNE EBOOKI AUTORA

Ciekawe propozycje

Spis treści

  1. Wprowadzenie    9
  
  1.1. Obliczenia równoległe     10
  1.2. Zawartość książki     13
  
  2. Standard OpenCL     17
  
  2.1. Model platformy     17
  2.2. Model pamięci     19
  2.3. Model wykonawczy     21
  2.3.1. Siatka obliczeniowa – NDRange    23
  2.3.2. Kontekst obliczeń oraz kolejka poleceń .    25
  2.4. Model programowania     26
  
  3. Język programowania dostępny w OpenCL     29
  
  3.1. Typy danych     29
  3.1.1. Typy podstawowe (typy skalarne)    30
  3.1.2. Typy wektorowe    33
  3.1.3. Typy do obsługi obrazów     34
  3.1.4. Inne typy oraz nazwy zarezerwowane    36
  3.2. Dostępne operatory     38
  3.3. Funkcje wbudowane    38
  3.4. Dodatkowe kwalifikatory oraz atrybuty    48
  3.5. Operacje na typach wektorowych OpenCL     51
  3.5.1. Dane typu wektorowego – dostęp do składowych    52
  3.5.2. Operacje na typach wektorowych     55
  3.5.3. Funkcje obsługujące dane typu wektorowego     58
  3.6. Obsługa siatki obliczeniowej    60
  3.7. Funkcje synchronizacji i funkcje atomowe     62
  3.8. Funkcje do obsługi obrazów     65
  3.9. Preprocesor OpenCL C    68
  3.10. Ograniczenia OpenCL C    71
  
  4. OpenCL – łatwe przykłady na początek    73
  
  4.1. Informacje o urządzeniu obliczeniowym     73
  4.1.1. Wersja dla API w języku C     75
  4.1.2. Informacje o urządzeniu obliczeniowym obiektowo i w C++     90
  4.2. Witaj Świecie!    97
  4.2.1. Przygotowania     98
  4.2.2. Uruchomienie jądra obliczeniowego     99
  4.3. Dodawanie wektorów    109
  4.3.1. Jądro obliczeniowe    110
  4.3.2. Wersja dla C++    114
  4.3.3. Inne operacje na wektorach do ćwiczeń     119
  4.4. Siatka lokalna oraz globalna     120
  4.5. Zlecanie i wykonywanie zadań    124
  4.6. Uwagi o kompilacji jądra obliczeniowego    126
  
  5. Przykłady obliczeń w OpenCL    129
  
  5.1. Obsługa printf w OpenCL    129
  5.2. Operacja redukcji    133
  5.2.1. Operacja redukcji – wersja szeregowa    134
  5.2.2. Operacja redukcji – jądro obliczeniowe podejście pierwsze .    135
  5.2.3. Operacja redukcji – jądro obliczeniowe podejście drugie    139
  5.2.4. Operacja redukcji – jądro obliczeniowe poddane optymalizacji    143
  5.3. Wyznaczanie histogramu     145
  5.3.1. Wersja szeregowa    145
  5.3.2. Wersja dla OpenCL     147
  5.4. Równoległe szukanie prawie binarne     150
  5.4.1. Wersja równoległa dla OpenCL     152
  5.5. Przybliżanie wartości liczby π     154
  5.5.1. Wersja szeregowa    154
  5.5.2. Wersja OpenCL – podejście bezpośrednie    156
  5.5.3. Wersja OpenCL – podejście o wyższej wydajności     162
  5.6. Gra w życie    168
  5.6.1. Gra w życie – procedura obliczeniowa     169
  5.6.2. Gra w życie – obsługa symulacji    172
  5.7. Zbiór Mandelbrota     176
  5.7.1. Zbiór Julii     177
  5.7.2. Tworzenie obrazu zbioru Mandelbrota – wersja szeregowa    177
  5.7.3. Tworzenie obrazu zbioru Mandelbrota – wersja OpenCL     180
  5.7.4. Tworzenie obrazu zbioru Julii    184
  5.7.5. Kolorowanie zbioru fraktalnego     185
  5.8. Algorytm sortowania bitonicznego     188
  5.8.1. Sieci sortujące    188
  5.8.2. Bitoniczna sieć sortująca    190
  5.8.3. Szeregowa wersja algorytmu sortowania bitonicznego    192
  5.8.4. Równoległa wersja algorytmu sortowania bitonicznego dla OpenCL    195
  5.9. Przetwarzanie obrazów    197
  5.9.1. Podstawy – wypełnienie obrazu    197
  5.9.2. Skalowanie obrazu    202
  5.9.3. Rozmywanie obrazu – filtr Gaussa .    207
  5.9.4. Wykrywanie krawędzi w obrazie za pomocą filtru Sobela    212
  5.10. Współpraca OpenCL z OpenGL    218
  5.10.1. Procedury obliczeniowe OpenCL     218
  5.10.2. Czynności wykonywane w programie gospodarza    219
  
  6. OpenCL w innych językach programowania    225
  
  6.1. Język Python     225
  6.1.1. Przegląd API pakietu PyOpenCL     227
  6.1.2. Znów dodawanie wektorów, ale w Pythonie    232
  6.1.3. Skrypt do testowania siatki obliczeniowej     236
  6.1.4. Stosowanie typów użytkownika .    238
  6.1.5. Klasa w Pythonie dla łatwiejszej współpracy z OpenCL    240
  6.2. Pakiet APARAPI dla języka Java    242
  6.2.1. Dodawanie wektorów     242
  6.2.2. Przegląd API pakietu APARAPI    245
  6.2.3. Algorytm Blacka-Sholesa     246
  6.2.4. Mechanizm rozszerzeń    249
  6.3. Inne rozwiązania, VexCL i nie tylko     251
  
  7. Zamiast zakończenia     255
  
  7.1.1. Analiza wydajności symulacji przykładu „Gra w życie”     255
  
  Dodatek A. Kompilacja przykładów     261
  
  Dodatek B. Instalacja pakietu OpenCL dla języka Python    263
  
  Dodatek C. Opis funkcji pomocniczych    265
  
  C.1. Zapis do formatu PPM     265
  C.2. Konwersja kodów formatu koloru do wartości znakowych    267
  C.3. Zapis i odczyt danych w formacie PNG     268
  C.4. Konwersja z modelu kolorów HSV do RGB     271
  C.5. Utworzenie macierzy dla filtru rozmywającego     272
  
  Dodatek D. Zestawianie używanych funkcji API OpenCL    275
  
  D.1. Funkcja clGetPlatformIDs    275
  D.2. Funkcja clGetPlatformInfo     276
  D.3. Funkcja clGetDeviceInfo     278
  D.4. Funkcja clGetSupportedImageFormats    286
  D.5. Funkcja clGetDeviceIDs    288
  D.6. Funkcja clCreateContext    290
  D.7. Funkcja clBuildProgram     291
  D.8. Funkcja clGetProgramBuildInfo     295
  D.9. Funkcja clCreateCommandQueue    297
  D.10. Funkcja clCreateBuffer    298
  D.11. Funkcja clEnqueueReadBuffer     300
  D.12. Funkcja clEnqueueWriteBuffer    303
  D.13. Funkcja clCreateProgramWithSource    305
  D.14. Funkcja clCreateKernel    306
  D.15. Funkcja clSetKernelArg    307
  D.16. Funkcja clEnqueueNDRangeKernel     309
  D.17. Funkcja clEnqueueTask    311
  D.18. Funkcja clGetKernelWorkGroupInfo    313
  D.19. Funkcja clCreateImage2D     316
  D.20. Funkcja clEnqueueReadImage     317
  D.21. Funkcja clEnqueueWriteImage    321
  D.22. Funkcja clFinish     324
  D.23. Funkcja clReleaseKernel    325
  D.24. Funkcja clReleaseProgram     325
  D.25. Funkcja clReleaseCommandQueue     326
  D.26. Funkcja clReleaseMemObject     327
  D.27. Funkcja clReleaseContext    327
  D.28. Funkcja clCreateFromGLBuffer    328
  D.29. Funkcja clCreateFromGLTexture2D     329
  D.30. Funkcja clEnqueueAcquireGLObjects     331
  D.31. Funkcja clEnqueueReleaseGLObjects    332
  
  Dodatek E. Spis kodów błędów API OpenCL    335
  
  Dodatek F. Najczęściej spotykane nazwy rozszerzeń    339
  
  Literatura    341
  Indeks     343
RozwińZwiń