16
ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011 outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance Computing (CUDA programming) Spring 2011 Barry Wilkinson Department of Computer Science University of North Carolina at Charlotte Tuesday/Thursday 5:00 pm – 6:15 pm Woodward 154

ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance

Embed Size (px)

Citation preview

Page 1: ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance

ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011 outline.1

ITCS 6010/8010 Topics in Computer Science:GPU Programming for High Performance Computing

(CUDA programming)

Spring 2011

Barry WilkinsonDepartment of Computer Science

University of North Carolina at Charlotte

Tuesday/Thursday 5:00 pm – 6:15 pmWoodward 154

Page 2: ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance

Course• This course is concerned with using

Graphics Processing Units (GPUs) for high performance computing

(not graphics)

• If you thought it was on graphics, now is the time to drop the course!

outline.2

Page 3: ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance

outline.3

http://www.nvidia.com/object/cuda_courses_and_map.html

Now a hot topic.

Taught at Illinois, Stanford, MIT, Harvard, Duke, Chapel Hill, UNCC, …

Page 4: ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance

4

Last few years GPUs have developed from graphics cards into a platform for high performance computing (HPC)

Now great interest in using GPUs for scientific high performance computing and GPUs are being designed with that application in mind

Graphics Processing Units (GPUs)

Page 5: ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance

5 http://www.hpcwire.com/blogs/New-China-GPGPU-Super-Outruns-Jaguar-105987389.html

Page 6: ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance

outline.6

Prerequisites

C/C++ programming -- Most programming is in C.

This course is concerned with programming computers, servers and clusters that have GPUs support – both Windows and Linux although most work is likely to be done on Linux systems

Page 7: ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance

outline.7

Course Text

CUDA by ExampleAn Introduction to General-Purpose GPU Programming

by Jason Sanders and Edwards Kandrot

Addison-Wesley, 2011.

Most materials needed for the course, however, can be found on-line, see course home page

Page 8: ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance

outline.8

Home Pages

For course notes, assignments, announcements, etc.:

http://www.cs.uncc.edu/~abw/ITCS6010S11/

Please check before each class.

Page 9: ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance

• History of GPUs leading to their use and design for HPC• Introduction to the GPU programming model and CUDA,

device memory• Basic CUDA program structure, kernel calls, threads,

blocks, grid, thread addressing, predefined variables, example code: matrix addition and multiplication (demos). Assignment 1 using Windows and Linux environments to compile and execute simple CUDA programs. Visual Studio, Linux make files

• More program demostrations illustrating various features, CUDA API, timing, synchronization, atomics, ...

• Monte Carlo programs, Illustration of CUDA random number generator and __device__ routines

outline.9

Course Contents

Page 10: ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance

• Incorporating graphical output.  Demo: N-body problem using X11 graphics and __synchthreads() routine

• Global barrier synchronization. Demo of heat distribution program

• Critical sections and atomics.  Demo: counter and histogram programs

• Parallel sorting.  Comparison of various algorithms suitable for GPUs. Demo of Ranksort.

outline.10

Course contents continued

Page 11: ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance

• More advanced features of CUDA, streams, multiple GPUs, using shared memory, constant memory, coalesced global memory access

• Optimizing performance, using knowledge of warps, and other characteristics of GPUs, overlapping computations, effects of control, flow, ...,

• Building complex applications, debugging tools, ... • OpenCL• Hybrid programming incorporating OpenMP and/or MPI

with CUDA, GPU clusters, distributed clusters, ...

outline.11

Course contents continued

Page 12: ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance

• It is expected to take roughly seven weeks to cover te material listed, interspersed with demos and assignments.

• The remaining time will be spent on considering applications and the course project. 

outline.12

Course contents continued

Page 13: ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance

outline.13

Assessment

• Class quizzes/tests (2) 20%• Smaller programming assignments (3) 30%• Course project 30%• Final exam

20% » The assessment and percentages may be modified.Read small print

Page 14: ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance

outline.14

All submitted assignments must be your own work. Copied work or work done by more than one person (unless specifically instructed) will not be accepted - at the very minimum, zero credit.

The UNC-C Code of Student Academic Integrity applies to both assignments and quizzes/tests.

No work will be accepted after the due date without good reason.

Page 15: ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance

outline.15

AttendanceAttendance is expected. Attendance will be recorded. If you miss classes, it can have a deleterious effect on your grade:

After 4 missed classes without good reason:

2 marks off overall accumulated marks (out of 100) for each additional class missed.

If you must miss class, see me beforehand to avoid losing marks.

Page 16: ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 3, 2011outline.1 ITCS 6010/8010 Topics in Computer Science: GPU Programming for High Performance

outline.16

InstructorBarry Wilkinson

Woodward, room 435G

Email: [email protected]

Office HoursTuesday/Thursday

2:00 pm - 4:30 pm.Walk-in at other times ok if not busy,

or send me an email for a mutually convenient time.