OpenCL. Akceleracja GPU w praktyce - Helion
ISBN: 978-8-3011-8045-4
stron: 344, Format: ebook
Data wydania: 2016-03-11
Księgarnia: Helion
Cena książki: 47,20 zł (poprzednio: 58,27 zł)
Oszczędzasz: 19% (-11,07 zł)
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.
Osoby które kupowały "OpenCL. Akceleracja GPU w praktyce", wybierały także:
- Windows Media Center. Domowe centrum rozrywki 66,67 zł, (8,00 zł -88%)
- 66,67 zł, (14,00 zł -79%)
- Superinteligencja. Scenariusze, strategie, zagro 66,67 zł, (14,00 zł -79%)
- Przywództwo w świecie VUCA. Jak być skutecznym liderem w niepewnym środowisku 58,64 zł, (12,90 zł -78%)
- Twoja firma w social mediach. Podr 58,33 zł, (14,00 zł -76%)
Spis treści
OpenCL. Akceleracja GPU w praktyce eBook -- spis treści
1. Wprowadzenie
1.1. Obliczenia równolegÅ‚e
1.2. Zawartość książki
2. Standard OpenCL
2.1. Model platformy
2.2. Model pamięci
2.3. Model wykonawczy
2.3.1. Siatka obliczeniowa – NDRange
2.3.2. Kontekst obliczeń oraz kolejka poleceń
2.4. Model programowania
3. Język programowania dostępny w OpenCL
3.1. Typy danych
3.1.1. Typy podstawowe (typy skalarne)
3.1.2. Typy wektorowe
3.1.3. Typy do obsÅ‚ugi obrazów
3.1.4. Inne typy oraz nazwy zarezerwowane
3.2. Dostępne operatory
3.3. Funkcje wbudowane
3.4. Dodatkowe kwalifikatory oraz atrybuty
3.5. Operacje na typach wektorowych OpenCL
3.5.1. Dane typu wektorowego – dostÄ™p do skÅ‚adowych
3.5.2. Operacje na typach wektorowych
3.5.3. Funkcje obsługujące dane typu wektorowego
3.6. Obsługa siatki obliczeniowej
3.7. Funkcje synchronizacji i funkcje atomowe
3.8. Funkcje do obsÅ‚ugi obrazów
3.9. Preprocesor OpenCL C
3.10. Ograniczenia OpenCL C
4. OpenCL – Å‚atwe przykÅ‚ady na poczÄ…tek
4.1. Informacje o urzÄ…dzeniu obliczeniowym
4.1.1. Wersja dla API w języku C
4.1.2. Informacje o urzÄ…dzeniu obliczeniowym obiektowo i w C++
4.2. Witaj Åšwiecie!
4.2.1. Przygotowania
4.2.2. Uruchomienie jÄ…dra obliczeniowego
4.3. Dodawanie wektorów
4.3.1. JÄ…dro obliczeniowe
4.3.2. Wersja dla C++
4.3.3. Inne operacje na wektorach do ćwiczeń
4.4. Siatka lokalna oraz globalna
4.5. Zlecanie i wykonywanie zadań
4.6. Uwagi o kompilacji jÄ…dra obliczeniowego
5. Przykłady obliczeń w OpenCL
5.1. Obsługa printf w OpenCL
5.2. Operacja redukcji
5.2.1. Operacja redukcji – wersja szeregowa
5.2.2. Operacja redukcji – jÄ…dro obliczeniowe podejÅ›cie pierwsze
5.2.3. Operacja redukcji – jÄ…dro obliczeniowe podejÅ›cie drugie
5.2.4. Operacja redukcji – jÄ…dro obliczeniowe poddane optymalizacji
5.3. Wyznaczanie histogramu
5.3.1. Wersja szeregowa
5.3.2. Wersja dla OpenCL
5.4. RównolegÅ‚e szukanie prawie binarne
5.4.1. Wersja równolegÅ‚a dla OpenCL
5.5. Przybliżanie wartości liczby ?
5.5.1. Wersja szeregowa
5.5.2. Wersja OpenCL – podejÅ›cie bezpoÅ›rednie
5.5.3. Wersja OpenCL – podejÅ›cie o wyższej wydajnoÅ›ci
5.6. Gra w życie
5.6.1. Gra w życie – procedura obliczeniowa
5.6.2. Gra w życie – obsÅ‚uga symulacji
5.7. Zbiór Mandelbrota
5.7.1. Zbiór Julii
5.7.2. Tworzenie obrazu zbioru Mandelbrota – wersja szeregowa
5.7.3. Tworzenie obrazu zbioru Mandelbrota – wersja OpenCL
5.7.4. Tworzenie obrazu zbioru Julii
5.7.5. Kolorowanie zbioru fraktalnego
5.8. Algorytm sortowania bitonicznego
5.8.1. Sieci sortujÄ…ce
5.8.2. Bitoniczna sieć sortująca
5.8.3. Szeregowa wersja algorytmu sortowania bitonicznego
5.8.4. RównolegÅ‚a wersja algorytmu sortowania bitonicznego dla OpenCL
5.9. Przetwarzanie obrazów
5.9.1. Podstawy – wypeÅ‚nienie obrazu
5.9.2. Skalowanie obrazu
5.9.3. Rozmywanie obrazu – filtr Gaussa
5.9.4. Wykrywanie krawędzi w obrazie za pomocą filtru Sobela
5.10. WspóÅ‚praca OpenCL z OpenGL
5.10.1. Procedury obliczeniowe OpenCL
5.10.2. Czynności wykonywane w programie gospodarza
6. OpenCL w innych językach programowania
6.1. Język Python
6.1.1. PrzeglÄ…d API pakietu PyOpenCL
6.1.2. Znów dodawanie wektorów, ale w Pythonie
6.1.3. Skrypt do testowania siatki obliczeniowej
6.1.4. Stosowanie typów użytkownika
6.1.5. Klasa w Pythonie dla Å‚atwiejszej wspóÅ‚pracy z OpenCL
6.2. Pakiet APARAPI dla języka Java
6.2.1. Dodawanie wektorów
6.2.2. PrzeglÄ…d API pakietu APARAPI
6.2.3. Algorytm Blacka-Sholesa
6.2.4. Mechanizm rozszerzeń
6.3. Inne rozwiÄ…zania, VexCL i nie tylko
7. Zamiast zakończenia
7.1.1. Analiza wydajnoÅ›ci symulacji przykÅ‚adu „Gra w życie”
Dodatek A. Kompilacja przykÅ‚adów
Dodatek B. Instalacja pakietu OpenCL dla języka Python
Dodatek C. Opis funkcji pomocniczych
C.1. Zapis do formatu PPM
C.2. Konwersja kodów formatu koloru do wartoÅ›ci znakowych
C.3. Zapis i odczyt danych w formacie PNG
C.4. Konwersja z modelu kolorów HSV do RGB
C.5. Utworzenie macierzy dla filtru rozmywajÄ…cego
Dodatek D. Zestawianie używanych funkcji API OpenCL
D.1. Funkcja clGetPlatformIDs
D.2. Funkcja clGetPlatformInfo
D.3. Funkcja clGetDeviceInfo
D.4. Funkcja clGetSupportedImageFormats
D.5. Funkcja clGetDeviceIDs
D.6. Funkcja clCreateContext
D.7. Funkcja clBuildProgram
D.8. Funkcja clGetProgramBuildInfo
D.9. Funkcja clCreateCommandQueue
D.10. Funkcja clCreateBuffer
D.11. Funkcja clEnqueueReadBuffer
D.12. Funkcja clEnqueueWriteBuffer
D.13. Funkcja clCreateProgramWithSource
D.14. Funkcja clCreateKernel
D.15. Funkcja clSetKernelArg
D.16. Funkcja clEnqueueNDRangeKernel
D.17. Funkcja clEnqueueTask
D.18. Funkcja clGetKernelWorkGroupInfo
D.19. Funkcja clCreateImage2D
D.20. Funkcja clEnqueueReadImage
D.21. Funkcja clEnqueueWriteImage
D.22. Funkcja clFinish
D.23. Funkcja clReleaseKernel
D.24. Funkcja clReleaseProgram
D.25. Funkcja clReleaseCommandQueue
D.26. Funkcja clReleaseMemObject
D.27. Funkcja clReleaseContext
D.28. Funkcja clCreateFromGLBuffer
D.29. Funkcja clCreateFromGLTexture2D
D.30. Funkcja clEnqueueAcquireGLObjects
D.31. Funkcja clEnqueueReleaseGLObjects
Dodatek E. Spis kodów bÅ‚Ä™dów API OpenCL
Dodatek F. Najczęściej spotykane nazwy rozszerzeń
Literatura
Indeks