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: Jason Sanders, Edward Kandrot

Ocena:
   4.5/6  Opinie  (0)
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 Kali Linux. Testy penetracyjne plus Czysty kod. Podręcznik dobrego programisty
Cena zestawu: 157.25 zł 185.00 zł
Oszczędzasz: 27.75 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ż:
Cena: 59.00 zł
Java. Podstawy. Wydanie IX
Cay S. Horstmann, Gary Cornell
Cena: 99.00 zł
Cena: 39.90 zł
GPU (Graphics Processor Unit) to specjalistyczny sprzęt o dużych możliwościach przetwarzania równoległego. W połączeniu z technologią wielordzeniowych procesorów CPU tworzą układy hybrydowe o bardzo dużej wydajności. Przed programistami tego typu układów stoją wyzwania, na które stara się odpowiedzieć książka. Znajduje się w niej opis podstawowych pojęć programowania równoległego i zasad programowania CUDA; wyjaśnienie sposobów wykorzystania pamięci stałej i tekstur, współpracy z bibliotekami graficznymi oraz przeprowadzania pomiarów wydajności algorytmów, a także technik diagnostyki programów i zasad ich użytkowania. Książka prezentuje narzędzia ułatwiające pisanie programów CUDA C i wskazuje, gdzie oprócz zamieszczonych w publikacji przykładów, można znaleźć inne przykłady kodów źródłowych. Publikacja przygotowuje programistów do pisania programów w technologii CUDA, czytelnik powinien znać język C i C++, nie jest wymagana znajomość technik graficznych.

NetWorld Piotr Kociatkiewicz, 04/2012

pokaż wszystkie