cuda
cuda
Matthew Guidry
Charles McClendon
Introduction to CUDA
• CUDA is a platform for performing massively
parallel computations on graphics accelerators
• CUDA was developed by NVIDIA
• It was first available with their G8X line of
graphics cards
• Approximately 1 million CUDA capable GPUs
are shipped every week
• CUDA presents a unique opportunity to
develop widely-deployed parallel applications
CUDA
• Because of the Power Wall, Latency Wall, etc
(free lunch is over), we must find a way to
keep our processor intensive programs from
slowing down to a crawl
• With CUDA developments it is possible to do
things like simulating Networks of Brain
Neurons
• CUDA brings the possibility of ubiquitous
supercomputing to the everyday computer…
CUDA
• CUDA is supported on all of NVIDIA’s G8X and
above graphics cards
Grid – A group of
one or more blocks. A
grid is created for each
CUDA kernel function
CUDA Memory Hierarchy
• The CUDA platform has three primary memory types
Local Memory – per thread memory for automatic variables and
register spilling.
• Fully pipelined
Code Example: Revisited
Myths About CUDA
• GPUs are the only processors in a CUDA application
– The CUDA platform is a co-processor, using the CPU and GPU
• GPUs have very wide (1000s) SIMD machines
– No, a CUDA Warp is only 32 threads
• Branching is not possible on GPUs
– Incorrect.
• GPUs are power-inefficient
– Nope, performance per watt is quite good
• CUDA is only for C or C++ programmers
– Not true, there are third party wrappers for Java, Python, and
more
Different Types of CUDA Applications
Future Developments of CUDA
• The next generation of CUDA, called “Fermi,”
will be the standard on the GeForce 300 series
• Fermi will have full support IEEE 754 double
precision
• Fermi will natively support more programming
languages
• Also, there is a new project, OpenCL that
seeks to provide an abstraction layer over
CUDA and similar platforms (AMD’s Stream)
Things to Ponder…