- Broschiertes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Ideal for students with at least introductory programming experience, this tutorial presents examples and reusable C code to jumpstart a wide variety of applications. Students will walk through moving from serial to parallel computation; computing values of a function in parallel; understanding 2D parallelism; simulating dynamics in the phase plane; simulating heat conduction; interacting with 3D data; walking through a basic N-body simulation, and more.
Andere Kunden interessierten sich auch für
- Sean T. AllenStorm Applied: Strategies for Real-Time Event Processing27,99 €
- Joseph Y. HuiSwitching and Traffic Theory for Integrated Broadband Networks166,99 €
- Vandana Prakash TondeReal Time Background Subtraction using CUDA Architecture29,99 €
- Harmanpreet KaurRMI Approach To Cluster Based Winograd's variant of Strassen's Method23,99 €
- Tools for High Performance Computing 201374,99 €
- Jean-Michel JolionA Pyramid Framework for Early Vision37,99 €
- Marcos Paulo Riccioni de MelosVehicle Traffic Simulation on Graphics Cards with CUDA26,99 €
-
-
-
Ideal for students with at least introductory programming experience, this tutorial presents examples and reusable C code to jumpstart a wide variety of applications. Students will walk through moving from serial to parallel computation; computing values of a function in parallel; understanding 2D parallelism; simulating dynamics in the phase plane; simulating heat conduction; interacting with 3D data; walking through a basic N-body simulation, and more.
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Produktdetails
- Produktdetails
- Verlag: Addison-Wesley
- Seitenzahl: 352
- Erscheinungstermin: 24. Dezember 2015
- Englisch
- Abmessung: 231mm x 187mm x 32mm
- Gewicht: 596g
- ISBN-13: 9780134177410
- ISBN-10: 013417741X
- Artikelnr.: 42697035
- Herstellerkennzeichnung
- Libri GmbH
- Europaallee 1
- 36244 Bad Hersfeld
- 06621 890
- Verlag: Addison-Wesley
- Seitenzahl: 352
- Erscheinungstermin: 24. Dezember 2015
- Englisch
- Abmessung: 231mm x 187mm x 32mm
- Gewicht: 596g
- ISBN-13: 9780134177410
- ISBN-10: 013417741X
- Artikelnr.: 42697035
- Herstellerkennzeichnung
- Libri GmbH
- Europaallee 1
- 36244 Bad Hersfeld
- 06621 890
Duane Storti is a professor of mechanical engineering at the University of Washington in Seattle. He has thirty-five years of experience in teaching and research in the areas of engineering mathematics, dynamics and vibrations, computer-aided design, 3D printing, and applied GPU computing. Mete Yurtoglu is currently pursuing an M.S. in applied mathematics and a Ph.D. in mechanical engineering at the University of Washington in Seattle. His research interests include GPU-based methods for computer vision and machine learning.
Acknowledgments xvii
About the Authors xix
Introduction 1
What Is CUDA? 1
What Does “Need-to-Know” Mean for Learning CUDA? 2
What Is Meant by “for Engineers”? 3
What Do You Need to Get Started with CUDA? 4
How Is This Book Structured? 4
Conventions Used in This Book 8
Code Used in This Book 8
User’s Guide 9
Historical Context 10
References 12
Chapter 1: First Steps 13
Running CUDA Samples 13
Running Our Own Serial Apps 19
Summary 22
Suggested Projects 23
Chapter 2: CUDA Essentials 25
CUDA’s Model for Parallelism 25
Need-to-Know CUDA API and C Language Extensions 28
Summary 31
Suggested Projects 31
References 31
Chapter 3: From Loops to Grids 33
Parallelizing dist_v1 33
Parallelizing dist_v2 38
Standard Workflow 42
Simplified Workflow 43
Summary 47
Suggested Projects 48
References 48
Chapter 4: 2D Grids and Interactive Graphics 49
Launching 2D Computational Grids 50
Live Display via Graphics Interop 56
Application: Stability 66
Summary 76
Suggested Projects 76
References 77
Chapter 5: Stencils and Shared Memory 79
Thread Interdependence 80
Computing Derivatives on a 1D Grid 81
Summary 117
Suggested Projects 118
References 119
Chapter 6: Reduction and Atomic Functions 121
Threads Interacting Globally 121
Implementing parallel_dot 123
Computing Integral Properties: centroid_2d 130
Summary 138
Suggested Projects 138
References 138
Chapter 7: Interacting with 3D Data 141
Launching 3D Computational Grids: dist_3d 144
Viewing and Interacting with 3D Data: vis_3d 146
Summary 171
Suggested Projects 171
References 171
Chapter 8: Using CUDA Libraries 173
Custom versus Off-the-Shelf 173
Thrust 175
cuRAND 190
NPP 193
Linear Algebra Using cuSOLVER and cuBLAS . 201
cuDNN 207
ArrayFire 207
Summary 207
Suggested 208
References 209
Chapter 9: Exploring the CUDA Ecosystem 211
The Go-To List of Primary Sources 211
Further Sources 217
Summary 218
Suggested Projects 219
Appendix A: Hardware Setup 221
Checking for an NVIDIA GPU: Windows 221
Checking for an NVIDIA GPU: OS X 222
Checking for an NVIDIA GPU: Linux 223
Determining Compute Capability 223
Upgrading Compute Capability 225
Appendix B: Software Setup 229
Windows Setup 229
OS X Setup 238
Linux Setup 240
Appendix C: Need-to-Know C Programming 245
Characterization of C 245
C Language Basics 246
Data Types, Declarations, and Assignments 248
Defining Functions 250
Building Apps: Create, Compile, Run, Debug 251
Arrays, Memory Allocation, and Pointers 262
Control Statements: for, if 263
Sample C Programs 267
References 277
Appendix D: CUDA Practicalities: Timing, Profiling, Error Handling, and
Debugging 279
Execution Timing and Profiling 279
Error Handling 292
Debugging in Windows 298
Debugging in Linux 305
CUDA-MEMCHECK 308
Using Visual Studio Property Pages 309
References 312
Index 313
About the Authors xix
Introduction 1
What Is CUDA? 1
What Does “Need-to-Know” Mean for Learning CUDA? 2
What Is Meant by “for Engineers”? 3
What Do You Need to Get Started with CUDA? 4
How Is This Book Structured? 4
Conventions Used in This Book 8
Code Used in This Book 8
User’s Guide 9
Historical Context 10
References 12
Chapter 1: First Steps 13
Running CUDA Samples 13
Running Our Own Serial Apps 19
Summary 22
Suggested Projects 23
Chapter 2: CUDA Essentials 25
CUDA’s Model for Parallelism 25
Need-to-Know CUDA API and C Language Extensions 28
Summary 31
Suggested Projects 31
References 31
Chapter 3: From Loops to Grids 33
Parallelizing dist_v1 33
Parallelizing dist_v2 38
Standard Workflow 42
Simplified Workflow 43
Summary 47
Suggested Projects 48
References 48
Chapter 4: 2D Grids and Interactive Graphics 49
Launching 2D Computational Grids 50
Live Display via Graphics Interop 56
Application: Stability 66
Summary 76
Suggested Projects 76
References 77
Chapter 5: Stencils and Shared Memory 79
Thread Interdependence 80
Computing Derivatives on a 1D Grid 81
Summary 117
Suggested Projects 118
References 119
Chapter 6: Reduction and Atomic Functions 121
Threads Interacting Globally 121
Implementing parallel_dot 123
Computing Integral Properties: centroid_2d 130
Summary 138
Suggested Projects 138
References 138
Chapter 7: Interacting with 3D Data 141
Launching 3D Computational Grids: dist_3d 144
Viewing and Interacting with 3D Data: vis_3d 146
Summary 171
Suggested Projects 171
References 171
Chapter 8: Using CUDA Libraries 173
Custom versus Off-the-Shelf 173
Thrust 175
cuRAND 190
NPP 193
Linear Algebra Using cuSOLVER and cuBLAS . 201
cuDNN 207
ArrayFire 207
Summary 207
Suggested 208
References 209
Chapter 9: Exploring the CUDA Ecosystem 211
The Go-To List of Primary Sources 211
Further Sources 217
Summary 218
Suggested Projects 219
Appendix A: Hardware Setup 221
Checking for an NVIDIA GPU: Windows 221
Checking for an NVIDIA GPU: OS X 222
Checking for an NVIDIA GPU: Linux 223
Determining Compute Capability 223
Upgrading Compute Capability 225
Appendix B: Software Setup 229
Windows Setup 229
OS X Setup 238
Linux Setup 240
Appendix C: Need-to-Know C Programming 245
Characterization of C 245
C Language Basics 246
Data Types, Declarations, and Assignments 248
Defining Functions 250
Building Apps: Create, Compile, Run, Debug 251
Arrays, Memory Allocation, and Pointers 262
Control Statements: for, if 263
Sample C Programs 267
References 277
Appendix D: CUDA Practicalities: Timing, Profiling, Error Handling, and
Debugging 279
Execution Timing and Profiling 279
Error Handling 292
Debugging in Windows 298
Debugging in Linux 305
CUDA-MEMCHECK 308
Using Visual Studio Property Pages 309
References 312
Index 313
Acknowledgments xvii
About the Authors xix
Introduction 1
What Is CUDA? 1
What Does “Need-to-Know” Mean for Learning CUDA? 2
What Is Meant by “for Engineers”? 3
What Do You Need to Get Started with CUDA? 4
How Is This Book Structured? 4
Conventions Used in This Book 8
Code Used in This Book 8
User’s Guide 9
Historical Context 10
References 12
Chapter 1: First Steps 13
Running CUDA Samples 13
Running Our Own Serial Apps 19
Summary 22
Suggested Projects 23
Chapter 2: CUDA Essentials 25
CUDA’s Model for Parallelism 25
Need-to-Know CUDA API and C Language Extensions 28
Summary 31
Suggested Projects 31
References 31
Chapter 3: From Loops to Grids 33
Parallelizing dist_v1 33
Parallelizing dist_v2 38
Standard Workflow 42
Simplified Workflow 43
Summary 47
Suggested Projects 48
References 48
Chapter 4: 2D Grids and Interactive Graphics 49
Launching 2D Computational Grids 50
Live Display via Graphics Interop 56
Application: Stability 66
Summary 76
Suggested Projects 76
References 77
Chapter 5: Stencils and Shared Memory 79
Thread Interdependence 80
Computing Derivatives on a 1D Grid 81
Summary 117
Suggested Projects 118
References 119
Chapter 6: Reduction and Atomic Functions 121
Threads Interacting Globally 121
Implementing parallel_dot 123
Computing Integral Properties: centroid_2d 130
Summary 138
Suggested Projects 138
References 138
Chapter 7: Interacting with 3D Data 141
Launching 3D Computational Grids: dist_3d 144
Viewing and Interacting with 3D Data: vis_3d 146
Summary 171
Suggested Projects 171
References 171
Chapter 8: Using CUDA Libraries 173
Custom versus Off-the-Shelf 173
Thrust 175
cuRAND 190
NPP 193
Linear Algebra Using cuSOLVER and cuBLAS . 201
cuDNN 207
ArrayFire 207
Summary 207
Suggested 208
References 209
Chapter 9: Exploring the CUDA Ecosystem 211
The Go-To List of Primary Sources 211
Further Sources 217
Summary 218
Suggested Projects 219
Appendix A: Hardware Setup 221
Checking for an NVIDIA GPU: Windows 221
Checking for an NVIDIA GPU: OS X 222
Checking for an NVIDIA GPU: Linux 223
Determining Compute Capability 223
Upgrading Compute Capability 225
Appendix B: Software Setup 229
Windows Setup 229
OS X Setup 238
Linux Setup 240
Appendix C: Need-to-Know C Programming 245
Characterization of C 245
C Language Basics 246
Data Types, Declarations, and Assignments 248
Defining Functions 250
Building Apps: Create, Compile, Run, Debug 251
Arrays, Memory Allocation, and Pointers 262
Control Statements: for, if 263
Sample C Programs 267
References 277
Appendix D: CUDA Practicalities: Timing, Profiling, Error Handling, and
Debugging 279
Execution Timing and Profiling 279
Error Handling 292
Debugging in Windows 298
Debugging in Linux 305
CUDA-MEMCHECK 308
Using Visual Studio Property Pages 309
References 312
Index 313
About the Authors xix
Introduction 1
What Is CUDA? 1
What Does “Need-to-Know” Mean for Learning CUDA? 2
What Is Meant by “for Engineers”? 3
What Do You Need to Get Started with CUDA? 4
How Is This Book Structured? 4
Conventions Used in This Book 8
Code Used in This Book 8
User’s Guide 9
Historical Context 10
References 12
Chapter 1: First Steps 13
Running CUDA Samples 13
Running Our Own Serial Apps 19
Summary 22
Suggested Projects 23
Chapter 2: CUDA Essentials 25
CUDA’s Model for Parallelism 25
Need-to-Know CUDA API and C Language Extensions 28
Summary 31
Suggested Projects 31
References 31
Chapter 3: From Loops to Grids 33
Parallelizing dist_v1 33
Parallelizing dist_v2 38
Standard Workflow 42
Simplified Workflow 43
Summary 47
Suggested Projects 48
References 48
Chapter 4: 2D Grids and Interactive Graphics 49
Launching 2D Computational Grids 50
Live Display via Graphics Interop 56
Application: Stability 66
Summary 76
Suggested Projects 76
References 77
Chapter 5: Stencils and Shared Memory 79
Thread Interdependence 80
Computing Derivatives on a 1D Grid 81
Summary 117
Suggested Projects 118
References 119
Chapter 6: Reduction and Atomic Functions 121
Threads Interacting Globally 121
Implementing parallel_dot 123
Computing Integral Properties: centroid_2d 130
Summary 138
Suggested Projects 138
References 138
Chapter 7: Interacting with 3D Data 141
Launching 3D Computational Grids: dist_3d 144
Viewing and Interacting with 3D Data: vis_3d 146
Summary 171
Suggested Projects 171
References 171
Chapter 8: Using CUDA Libraries 173
Custom versus Off-the-Shelf 173
Thrust 175
cuRAND 190
NPP 193
Linear Algebra Using cuSOLVER and cuBLAS . 201
cuDNN 207
ArrayFire 207
Summary 207
Suggested 208
References 209
Chapter 9: Exploring the CUDA Ecosystem 211
The Go-To List of Primary Sources 211
Further Sources 217
Summary 218
Suggested Projects 219
Appendix A: Hardware Setup 221
Checking for an NVIDIA GPU: Windows 221
Checking for an NVIDIA GPU: OS X 222
Checking for an NVIDIA GPU: Linux 223
Determining Compute Capability 223
Upgrading Compute Capability 225
Appendix B: Software Setup 229
Windows Setup 229
OS X Setup 238
Linux Setup 240
Appendix C: Need-to-Know C Programming 245
Characterization of C 245
C Language Basics 246
Data Types, Declarations, and Assignments 248
Defining Functions 250
Building Apps: Create, Compile, Run, Debug 251
Arrays, Memory Allocation, and Pointers 262
Control Statements: for, if 263
Sample C Programs 267
References 277
Appendix D: CUDA Practicalities: Timing, Profiling, Error Handling, and
Debugging 279
Execution Timing and Profiling 279
Error Handling 292
Debugging in Windows 298
Debugging in Linux 305
CUDA-MEMCHECK 308
Using Visual Studio Property Pages 309
References 312
Index 313