Katalog książek

Wydawnictwo Helion

Helion SA
ul. Kościuszki 1c
44-100 Gliwice
tel. (32) 230-98-63




© Helion 1991-2014

Lauret zaufanych opinii
CUDA w przykładach. Wprowadzenie...

CUDA w przykładach. Wprowadzenie do ogólnego programowania procesorów GPU

Autorzy: ,

Ocena:
   4.5/6  Opinie  (6)
Stron: 232
Ksiazka drukowana Druk (oprawa: miękka)
Cena:
59,00 zł

Książka ta jest obowiązkową pozycją dla wszystkich programistów pracujących z systemami zawierającymi akceleratory.
Ze wstępu autorstwa Jacka Dongarry’ego,
Uniwersytet Tennessee i Oak Ridge National Laboratory

Od astrofizyki i chemii, przez biologię obliczeniową, aż po analizę sejsmiczną i rekonstrukcję obrazu w tomografii komputerowej - architektura CUDA została entuzjastycznie przyjęta przez środowiska naukowe i akademickie. Znalazła też zastosowanie w wielu strategicznych gałęziach gospodarki i stała się niezwykłym ułatwieniem dla twórców programów równoległych, którym pozwoliła na wykorzystanie olbrzymiej mocy procesorów GPU do budowy ekstremalnie wydajnych aplikacji. Oto podręcznik napisany przez członków zespołu tworzących architekturę CUDA. Stanowi on wyczerpujące wprowadzenie w świat programowania najnowszych akceleratorów o dużych możliwościach przetwarzania równoległego. Oparty na licznych przykładach, zilustrowany fragmentami przydatnego kodu przewodnik zawiera pełny opis tej platformy, wprowadzenie do języka CUDA C oraz szczegółowy opis wszystkich kluczowych technik pracy z tą niezwykłą architekturą.

  • Programowanie równoległe
  • Współpraca wątków
  • Pamięć stała i zdarzenia
  • Pamięć teksturowa
  • Interoperacyjność grafiki
  • Operacje atomowe
  • Strumienie
  • CUDA C na wielu procesorach GPU
  • Operacje atomowe dla zaawansowanych
  • Dodatkowe zasoby CUDA

Opanuj język CUDA C i pisz programy wyróżniające się niezwykłą wydajnością!


Jason Sanders jest starszym programistą w zespole ds. platformy CUDA w firmie NVIDIA. Brał udział w pracach nad pierwszymi wersjami oprogramowania systemowego CUDA. Ma także ma swój wkład w specyfikację OpenCL 1.0. Zanim rozpoczął pracę w NVIDIA, pracował dla firm ATI Technologies, Apple oraz Novell.

Edward Kandrot jest starszym programistą w zespole ds. algorytmów CUDA w firmie NVIDIA. Przedtem pracował nad wydajnością programów takich firm, jak Adobe, Microsoft, Google czy Autodesk.

Słowo wstępne (9)
Przedmowa (11)
Podziękowania (13)
O autorach (15)
1. Dlaczego CUDA? Dlaczego teraz? (17)
  • 1.1. Streszczenie rozdziału (17)
  • 1.2. Era przetwarzania równoległego (17)
    • 1.2.1. Procesory CPU (18)
  • 1.3. Era procesorów GPU (19)
    • 1.3.1. Historia procesorów GPU (19)
    • 1.3.2. Początki programowania GPU (20)
  • 1.4. CUDA (21)
    • 1.4.1. Co to jest architektura CUDA (21)
    • 1.4.2. Używanie architektury CUDA (22)
  • 1.5. Zastosowania technologii CUDA (22)
    • 1.5.1. Obrazowanie medyczne (22)
    • 1.5.2. Symulacja dynamiki płynów (23)
    • 1.5.3. Ochrona środowiska (24)
  • 1.6. Podsumowanie (25)
2. Konfiguracja komputera (27)
  • 2.1. Streszczenie rozdziału (27)
  • 2.2. Środowisko programistyczne (27)
    • 2.2.1. Procesor graficzny z obsługą technologii CUDA (28)
    • 2.2.2. Sterownik urządzeń NVIDII (29)
    • 2.2.3. Narzędzia programistyczne CUDA (30)
    • 2.2.4. Standardowy kompilator języka C (31)
  • 2.3. Podsumowanie (32)
3. Podstawy języka CUDA C (33)
  • 3.1. Streszczenie rozdziału (33)
  • 3.2. Pierwszy program (33)
    • 3.2.1. Witaj, świecie! (34)
    • 3.2.2. Wywoływanie funkcji jądra (34)
    • 3.2.3. Przekazywanie parametrów (35)
  • 3.3. Sprawdzanie właściwości urządzeń (38)
  • 3.4. Korzystanie z wiedzy o właściwościach urządzeń (42)
  • 3.5. Podsumowanie (43)
4. Programowanie równoległe w języku CUDA C (45)
  • 4.1. Streszczenie rozdziału (45)
  • 4.2. Programowanie równoległe w technologii CUDA (45)
    • 4.2.1. Sumowanie wektorów (46)
    • 4.2.2. Zabawny przykład (52)
  • 4.3. Podsumowanie (60)
5. Wątki (61)
  • 5.1. Streszczenie rozdziału (61)
  • 5.2. Dzielenie równoległych bloków (61)
    • 5.2.1. Sumowanie wektorów - nowe spojrzenie (62)
    • 5.2.2. Generowanie rozchodzących się fal za pomocą wątków (68)
  • 5.3. Pamięć wspólna i synchronizacja (72)
    • 5.3.1. Iloczyn skalarny (74)
    • 5.3.2. Optymalizacja (niepoprawna) programu obliczającego iloczyn skalarny (82)
    • 5.3.3. Generowanie mapy bitowej za pomocą pamięci wspólnej (84)
  • 5.4. Podsumowanie (87)
6. Pamięć stała i zdarzenia (89)
  • 6.1. Streszczenie rozdziału (89)
  • 6.2. Pamięć stała (89)
    • 6.2.1. Podstawy techniki śledzenia promieni (90)
    • 6.2.2. Śledzenie promieni na GPU (91)
    • 6.2.3. Śledzenie promieni za pomocą pamięci stałej (96)
    • 6.2.4. Wydajność programu a pamięć stała (97)
  • 6.3. Mierzenie wydajności programów za pomocą zdarzeń (99)
    • 6.3.1. Pomiar wydajności algorytmu śledzenia promieni (100)
  • 6.4. Podsumowanie (103)
7. Pamięć tekstur (105)
  • 7.1. Streszczenie rozdziału (105)
  • 7.2. Pamięć tekstur w zarysie (105)
  • 7.3. Symulacja procesu rozchodzenia się ciepła (106)
    • 7.3.1. Prosty model ogrzewania (106)
    • 7.3.2. Obliczanie zmian temperatury (108)
    • 7.3.3. Animacja symulacji (110)
    • 7.3.4. Użycie pamięci tekstur (114)
    • 7.3.5. Użycie dwuwymiarowej pamięci tekstur (117)
  • 7.4. Podsumowanie (121)
8. Współpraca z bibliotekami graficznymi (123)
  • 8.1. Streszczenie rozdziału (124)
  • 8.2. Współpraca z bibliotekami graficznymi (124)
  • 8.3. Generowanie rozchodzących się fal za pomocą GPU i biblioteki graficznej (130)
    • 8.3.1. Struktura GPUAnimBitmap (130)
    • 8.3.2. Algorytm generujący fale na GPU (133)
  • 8.4. Symulacja rozchodzenia się ciepła za pomocą biblioteki graficznej (135)
  • 8.5. Współpraca z DirectX (139)
  • 8.6. Podsumowanie (139)
9. Operacje atomowe (141)
  • 9.1. Streszczenie rozdziału (141)
  • 9.2. Potencjał obliczeniowy (141)
    • 9.2.1. Potencjał obliczeniowy procesorów GPU NVIDII (142)
    • 9.2.2. Kompilacja dla minimalnego potencjału obliczeniowego (144)
  • 9.3. Operacje atomowe w zarysie (144)
  • 9.4. Obliczanie histogramów (146)
    • 9.4.1. Obliczanie histogramu za pomocą CPU (146)
    • 9.4.2. Obliczanie histogramu przy użyciu GPU (148)
  • 9.5. Podsumowanie (156)
10. Strumienie (157)
  • 10.1. Streszczenie rozdziału (157)
  • 10.2. Pamięć hosta z zablokowanym stronicowaniem (158)
  • 10.3. Strumienie CUDA (162)
  • 10.4. Używanie jednego strumienia CUDA (162)
  • 10.5. Użycie wielu strumieni CUDA (166)
  • 10.6. Planowanie pracy GPU (171)
  • 10.7. Efektywne wykorzystanie wielu strumieni CUDA jednocześnie (173)
  • 10.8. Podsumowanie (175)
11. Wykonywanie kodu CUDA C jednocześnie na wielu GPU (177)
  • 11.1. Streszczenie rozdziału (177)
  • 11.2. Pamięć hosta niewymagająca kopiowania (178)
    • 11.2.1. Obliczanie iloczynu skalarnego za pomocą pamięci niekopiowanej (178)
    • 11.2.2. Wydajność pamięci niekopiowanej (183)
  • 11.3. Użycie kilku procesorów GPU jednocześnie (184)
  • 11.4. Przenośna pamięć zablokowana (188)
  • 11.5. Podsumowanie (192)
12. Epilog (193)
  • 12.1. Streszczenie rozdziału (194)
  • 12.2. Narzędzia programistyczne (194)
    • 12.2.1. CUDA Toolkit (194)
    • 12.2.2. Biblioteka CUFFT (194)
    • 12.2.3. Biblioteka CUBLAS (195)
    • 12.2.4. Pakiet GPU Computing SDK (195)
    • 12.2.5. Biblioteka NVIDIA Performance Primitives (196)
    • 12.2.6. Usuwanie błędów z kodu CUDA C (196)
    • 12.2.7. CUDA Visual Profiler (198)
  • 12.3. Literatura (199)
    • 12.3.1. Książka Programming Massively Parallel Processors: A Hands-on Approach (199)
    • 12.3.2. CUDA U (199)
    • 12.3.3. Fora NVIDII (200)
  • 12.4. Zasoby kodu źródłowego (201)
    • 12.4.1. Biblioteka CUDA Parallel Primitives Library (201)
    • 12.4.2. CULATools (201)
    • 12.4.3. Biblioteki osłonowe (202)
  • 12.5. Podsumowanie (202)
A: Operacje atomowe dla zaawansowanych (203)
  • A.1. Iloczyn skalarny po raz kolejny (203)
    • A.1.1. Blokady atomowe (205)
    • A.1.2. Iloczyn skalarny: blokady atomowe (207)
  • A.2. Implementacja tablicy skrótów (210)
    • A.2.1. Tablice skrótów - wprowadzenie (210)
    • A.2.2. Tablica skrótów dla CPU (212)
    • A.2.3. Wielowątkowa tablica skrótów (216)
    • A.2.4. Tablica skrótów dla GPU (217)
    • A.2.5. Wydajność tablicy skrótów (223)
  • A.3. Podsumowanie (224)
Skorowidz (225)
Najczęściej kupowane razem:
CUDA w przykładach. Wprowadzenie do ogólnego programowania procesorów GPU plus Od matematyki do programowania. Wszystko, co każdy programista wiedzieć powinien plus AngularJS
Cena zestawu: 116,32 zł 136,85 zł
Oszczędzasz: 20,53 zł (15%)
Dodaj do koszyka
zestaw0 CUDA w przykładach. Wprowadzenie do ogólnego programowania procesorów GPU
Osoby, które kupowały książkę, często kupowały też:
Java. Podstawy. Wydanie IX
Cay S. Horstmann, Gary Cornell
Cena: 99,00 zł
C#. Rusz głową! Wydanie III
Jennifer Greene, Andrew Stellman
Cena: 99,00 zł
6
(1)
5
(3)
4
(1)
3
(1)
2
(0)
1
(0)

Liczba ocen: 6

Średnia ocena
czytelników

  


okladka
  Ocena : 6 

Książka godna polecenia dla KAŻDEGO, kto choć trochę interesuje się (lub ma zamiar zacząć przygodę) przetwarzaniem równoległym obliczeń. Rzuca nowe światło na tą technologię i pokazuje, że wcale nie jest trudna. Książka jest krótka lecz bardzo treściwa. Każdy aspekt podstawowego wykorzystania technologii CUDA został przedstawiony wraz z przykładem. Autorzy zadbali o każdy szczegół implementacji i nawet graficzne aplikacje nikomu nie powinny sprawić kłopotów (załączone gotowe biblioteki graficzne i napisane gotowe klasy). Książka w żaden sposób nie rozczarowuje. Jest dokładnie tym czego się spodziewałem. Gorąco polecam!!!
  Ocena : 5 

Książka ciekawa, jest bardzo dobrym wstępem do programowania z wykorzystaniem architektury CUDA, polecam ją każdemu kto chciałby rozpocząć swoją przygodę z CUDA.
  Ocena : 5 

Długo czekałem na tą książkę. Pierwsza polskojęzyczna książka poruszająca programowanie układów GPU firmy Nvidia. Jeżeli obliczenia mogą być wykonane kilka razy szybciej i to w dodatku w prosty sposób to dlaczego nie skorzystać z tej technologii. W realizacji tego celu pomoże nam ta książka.
  Ocena : 5 

Dobry wstęp do programowania w Cuda. Później zostaje tylko czytanie dokumentacji i poradników od Nvidii. Ogólnie polecam
  Ocena : 4 

Książka dobra, ale nie ma w niej słowa o konfiguracji projektu, co jest jej ogromną wadą. Poprawne skonfigurowanie np. pod VS 2008 projektu CUDA nie jest specjalnie proste więc oczekiwałbym od takiej książki choćby komentarza na ten temat.
  Ocena : 3 

Niestety całość moim zdaniem psuje to, że nie da się uruchomić programów dołączonych do niej, albo kompilator sypie tysiącem błędów. Jak ktoś wie jak to zrobić używając Code:Block z kompilatorem MinGW będę wdzięczny za instrukcję i wtedy ewentualnie zmienię ocenę tej pozycji.