BNL Home
BNL Computational Science Center CUDA and OPENMP High Performance Computing Workshop

Workshop Agenda

Days 1 & 3

Introduction to High Performance Computing (CUDA)

Dates Monday, November 4 and Wednesday, November 6
Times Workshop (9:00 AM to 4:00 PM)
Lunch (12:00 PM to 1:00 PM), not included
Location Medical Research Center, Large Conference Room

All programming today is parallel programming - for example, without any effort on the programmer's part, a good compiler will take advantage of parallel features built into commodity CPU ICs. Your choice as a programmer is how much you want to take advantage of everything else that is available.

The parallel programming tutorial will study the algorithmic underpinning used by a number of parallel programming technologies, including CUDA and OpenMP. In particular, we will discuss the map, stencil, reduction, scan, and histogram patterns and include analysis of the algorithm's performance. We will also discuss the importance of data locality and the impact of thinking in terms of high-latency/high-throughput instead low latency/low throughput.

CUDA is the architecture and minimal language extensions that permits C and Fortran programmers to take advantage of the processing power that exists in commodity GPUs (Graphics Boards) made by nVidia. Each of these GPUs incorporate hundreds of cores and can run thousands of threads and can be used in conjunction with other parallel technologies (MPI, openMP, etc.) We will work with a number of standard parallel patterns which were discussed in the first session and everyone will have the opportunity to code, run, and profile some examples of each in either C or Fortran. If time permits, the porting of existing "serial" code to CUDA will be discussed.

Day 2

Introductory Tutorial to Programming Using OpenMP

Date Tuesday, November 5
Times Workshop (9:00 AM to 4:00 PM)
Lunch (12:00 PM to 1:00 PM), not included
Location Medical Research Center, Large Conference Room
Presentation downloadDownload slides (pdf)

OpenMP is a parallel programming model for shared memory multiprocessors. It is the standard for parallelizing applications to run on multi-core computers and has wide compiler support.

This workshop will provide an introductory tutorial to programming using OpenMP. Loop level parallelism will be introduced through a series of programming examples that participants will write, compile and run. Examples will be presented in both C and Fortran.

Top of Page

Last Modified: December 27, 2017