CUDA w przykladach Wprowadzenie do ogolnego programowania procesorow GPU.pdf

(838 KB) Pobierz
Tytuł oryginału: CUDA by Example: An Introduction to General-Purpose GPU Programming
Tłumaczenie:
Łukasz
Piwko
ISBN: 978-83-246-3817-8
Authorized translation from the English language edition, entitled: CUDA by Example: An Introduction to
General-Purpose GPU Programming; ISBN 0131387685, by Jason Sanders and Edward Kandrot; published
by Pearson Education, Inc, publishing as
Addison-Wesley Professional; Copyright © 2011 by NVIDIA Corporation.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from Pearson Education Inc.
Polish language edition published by Helion S.A.
Copyright © 2012.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniej¬szej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficz¬ną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były
kompletne i rzetelne. Nie biorą jednak
żadnej
odpowiedzialności ani za ich wykorzystanie, ani za związane
z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie
ponoszą również
żadnej
odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji
zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/cudawp
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis treści
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
Kup książkę
Poleć książkę
SPIS TREŚCI
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
6
Kup książkę
Poleć książkę
SPIS TREŚCI
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
7
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin