OpenCL
  • -12%

ebook OpenCL Marek Sawerwain

Marek Sawerwain
Wydawca: Wydawnictwo Naukowe PWN
Rok wydania: 2014
Opis Spis treści Szczegóły Recenzje

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.

Spis treści ebooka OpenCL

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

Szczegóły ebooka OpenCL

Wydawca:
Wydawnictwo Naukowe PWN
Rok wydania:
2014
Typ publikacji:
Ebook
Język:
polski
Format:
mobi,epub
ISBN:
978-83-01-18045-4
ISBN wersji papierowej:
978-83-01-18012-6
Wydanie:
1
Autorzy:
Marek Sawerwain
Miejsce wydania:
Warszawa
Liczba Stron:
344

Recenzje ebooka OpenCL

Średnia ocena

0.0
0 recenzji

  • Reviews (0)

@CUSTOMER_NAME@

@COMMENT_TITLE@

@COMMENT_COMMENT@

@COMMENT_AVATAR@

@CUSTOMER_NAME@

@AUTHOR_PROFILE@ @COMMENT_ISO_COUNTRY@ @VERIFY_PURCHASE@
@COMMENT_DATE@
@COMMENT_NO_APPROVE@

@COMMENT_COMMENT@

Reply
@COMMENT_AVATAR@

@CUSTOMER_NAME@

@AUTHOR_PROFILE@ @COMMENT_ISO_COUNTRY@ @VERIFY_PURCHASE@
@COMMENT_DATE@
@COMMENT_NO_APPROVE@

@COMMENT_COMMENT@

Reply

Na jakich urządzeniach mogę czytać ebooki?

Ikona ebooka Na czytnikach Kindle, PocketBook, Kobo i innych
Ikona komutera Na komputerach stacjonarnych i laptopach
Ikona telefonu Na telefonach z systemem ANDROID lub iOS
Ikona urządzenia elektroniczne Na wszystkich urządzeniach obsługujących format plików PDF, Mobi, EPub
  • -12%
-12% 64,00 zł
56,47 zł
Najniższa cena z 30 dni: 56,47 zł