Dr. Weijun Xiao
Electrical and Computer Engineering
Duration: 3 days (21 hours)
The rapid development of Graphic Processing Units (GPUs) brings new opportunities for high performance computing. Due to the low cost and parallel computing capability of GPUs, GPU computing has recently been used for a wide range of high-performance computing applications. Benefiting from GPU hardware, applications can often achieve more than 100 times performance speedup for signal processing, physical simulations, biomedical imaging, geologic computation, and other fields. The primary objective of this short course is to provide students with knowledge and hands-on experience in developing application software for GPUs. The course will concentrate on parallel programming basics, GPU hardware architecture and software, CUDA architecture, CUDA programming & debugging techniques.
GPU computing and architecture
Parallel programming basics
2. CUDA programming
CUDA program model
A simple CUDA program
3. CUDA programming techniques
4. CUDA streams & multiple GPUs
5. Integrating CUDA C with MFC and OpenGL
CUDA C with MFC
CUDA C with OpenGL
6. CUDA debugging techniques
CUDA program debugging
CUDA performance profiling
Intended audience and assumed background:
This short course is intended for software designers and application developers who need to understand how to achieve high performance by using GPUs for general-purpose computing, and who need to learn CUDA programming & debugging techniques. People from various disciplines with a strong need for solving computing-intensive problems are encouraged to attend this course. It is assumed that the audience has a basic understanding of a computer system and entry-level C/C++ programming experience at the level of an undergraduate in an engineering or scientific discipline. For example, it is expected to know how pipelining works and how to write a simple C/C++ program.
Biographical sketch of the instructor:
Weijun Xiao received his Ph.D. in Electrical and Computer Engineering from the University of Rhode Island, and both M.S. and B.S. degrees in Computer Science from Huazhong University of Science and Technology, China. He is currently a Research Associate of the Department of Electrical and Computer Engineering at the University of Minnesota-Twin Cities. He has been named a 2009 Computing Innovation Fellow (CIFellow), a postdoctoral fellowship program developed by the Computing Community Consortium (CCC) and the Computing Research Association (CRA), with funding from the National Science Foundation. Dr. Xiao's primary expertise is in data storage, high-performance computing, and computer architecture. He has published research papers at top journals and conferences in these areas such as IEEE TPDS, ISCA, and ICDCS.