Supercomputing 2009 CUDA Tutorial

High Performance Computing with CUDA

Welcome to the course notes for the full-day SUPERCOMPUTING 2009 CUDA Tutorial!

(Note: the slides below are also available on the NVIDIA website.)

Abstract
NVIDIA’s CUDA is a general purpose architecture for writing highly parallel
applications. CUDA provides several key abstractions–a hierarchy of thread blocks,
shared memory, and barrier synchronization–for scalable high-performance parallel
computing. Scientists throughout industry and academia use CUDA to achieve dramatic
speedups on production and research codes. The CUDA architecture supports many
languages, programming environments, and libraries including C, Fortran, OpenCL,
DirectX Compute, Python, Matlab, FFT, LAPACK, etc.
In this tutorial NVIDIA engineers will partner with academic and industrial researchers to
present CUDA and discuss its advanced use for science and engineering domains. The
morning session will introduce CUDA programming, motivate its use with many brief
examples from different HPC domains, and discuss tools and programming
environments. The afternoon will discuss advanced issues such as optimization and
sophisticated algorithms/data structures, closing with real-world case studies from
domain scientists using CUDA for computational biophysics, fluid dynamics, seismic
imaging, and theoretical physics.

Abstract

NVIDIA’s CUDA is a general-purpose architecture for writing highly parallel applications. CUDA provides several key abstractions—a hierarchy of thread blocks, shared memory, and barrier synchronization—for scalable high-performance parallel computing. Scientists throughout industry and academia use CUDA to achieve dramatic speedups on production and research codes. The CUDA architecture supports many languages, programming environments, and libraries including C, Fortran, OpenCL, DirectX Compute, Python, Matlab, FFT, LAPACK, etc.

In this tutorial NVIDIA engineers will partner with academic and industrial researchers to present CUDA and discuss its advanced use for science and engineering domains. The morning session will introduce CUDA programming, motivate its use with many brief examples from different HPC domains, and discuss tools and programming environments. The afternoon will discuss advanced issues such as optimization and sophisticated algorithms/data structures, closing with real-world case studies from domain scientists using CUDA for computational biophysics, fluid dynamics, seismic imaging, and theoretical physics.

8:30 Introduction-Overview and CUDA Basics
David Luebke, NVIDIA
[Download PDF]

9:00 CUDA Programming Environments
Ian Buck, NVIDIA
[Download PDF]

10:30 CUDA Libraries & Tools
Jonathan Cohen, NVIDIA
[Download PDF]

11:15 Optimizing GPU Performance and CPU-GPU Performance
Paulius Micikevicius, NVIDIA
[Download PDF]

1:45 Irregular Algorithms & Data Structures
John Owens, University of California Davis
[Download PDF]

2:30 Molecular Modeling
John Stone, University of Illinois at Urbana-Champaign
[Download PDF]

3:30 Seismic Imaging
Scott Morton, Hess
[Download PDF]

4:00 Computational Fluid Dynamics
Jonathan Cohen, NVIDIA
[Download PDF]

5:00 Quantum Chromodynamics
Michael Clark, Harvard University
[Download PDF]