ITCS 4010/5010 Topics in Computer Science: GPU Programming for High Performance Computing (CUDA programming) Spring 2013 Barry Wilkinson Department of Computer Science University of North Carolina at Charlotte Tuesday/Thursday 5:00 pm – 6:15 pm Woodward 130 ITCS 4/5010 CUDA Programming, UNC-Charlotte, B. Wilkinson Dec 24, 2012 outline.1 Outline These slides constitute the course outline and include the course syllabus and course policies. outline.2 Course • This course is concerned with using Graphics Processing Units (GPUs) for high performance computing (not graphics although we may create graphical output as well) • If you thought it was a course specifically on graphics, now is the time to drop the course! 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, UNC-C, … outline.4 Graphics Processing Units (GPUs) 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 5 Fastest computer systems in the world NVIDIA has just In the last few years, GPUs have donated a 2496moved from simply core K20 GPU. Not yet ready supporting for class to use. graphics to being designed and used for high performance We will be using two computing. servers with NVIDIA Many if not most high performance clusters use GPUs 448-core 2050 GPUs (one 2050 donated by NVIDIA) http://top500.org/ 6 UNCC cluster used for assignments coit-grid01.uncc.edu – coit-grid7.uncc.edu Login from on-campus or off-campus coitgrid01 coitgrid02 coitgrid03 coit-grid01-4: Each two Xeon processors (3.4Ghz) 8GB main memory switch coit-grid05: Dell R900, four quad-core Xeon processors (2.93Ghz) 64GB main memory 1.2 TB disk coitgrid05 coitgrid04 Login from within the campus only coitgrid07 coitgrid06 NVIDIA Tesla GPU NVIDIA Tesla GPU (448 core Fermi) (448 core Fermi) coit-grid07: GPU server, X5560 2.8GHz quad-core Xeon processor with NVIDIA 2050 GPU, 12GB main memory coit-grid06: GPU server with NVIDIA 2050 GPU, All user’s home directories on coit-grid05 (NFS) GPU servers grid06 and grid07 for HPC GPU programming Can also use Windows lab machines if have NVIDIA cards and software. 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 Prerequisites C/C++ programming -- Most programming is in C. outline.8 Course Textbook: No required course textbook. Supporting Textbook: CUDA by Example An Introduction to GeneralPurpose GPU Programming by Jason Sanders and Edwards Kandrot Addison-Wesley, 2011. However, most materials needed for the course can be found on-line, see course home page outline.9 Home Pages For course notes, assignments, announcements, etc.: http://www.cs.uncc.edu/~abw/ITCS4010S13/ Please check before each class. outline.10 Course Contents • 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). Using Windows and Linux environments to compile and execute simple CUDA programs. Incorporating graphical output (X11 graphics) • Timing • Device variables and routines • Synchronization • Critical sections, atomics, ... outline.11 Course contents continued • 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, ... • Hybrid programming incorporating OpenMP and/or MPI with CUDA, ... • OpenCL, … • OpenACC outline.12 Course contents continued • It is expected to take roughly seven weeks to cover the formal material listed, interspersed with demos and assignments. • The remaining time will be spent on considering applications and the course project. outline.13 Course Grade Letter grades will be assigned according to the following scales: Undergraduate Grade Scale A 90 - 100 B 80 - 89.99 C 70 - 79.99 D 60 - 69.99 F 0 - 59.99 Graduate Grade Scale A 90 - 100 B 80 - 89.99 C 70 - 79.99 U 0 - 69.99 worst case, and may be curved according to the performance of the entire class. So, if you are above average in the class, your grade will be above average and similarly if you are below average, the grade will be below average. For each assignment or test, the class average will be announced after grading so you can see where you stand in the class. outline.14 Assessment • • • • Class quizzes/tests (2) Smaller programming assignments (3) Course project Final exam » 20% 30% 30% 20% The assessment and percentages may be modified. Read small print outline.15 Graduate students There will be additional work in the assignments for graduate students, which will be extra credit for undergraduates. outline.16 Code of Student Academic Integrity 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 - and may be subject to disciplinary action. The Code of Student Academic Integrity applies to both assignments and quizzes/tests. outline.17 Due dates for assignments Will be posted on home page with assignment. Assignments can be turned in late but with a penalty. Late < 24 hours > 24 hours and < 48 hours > 48 hours and < 72 hours > 72 hours Penalty 10% 20% 30% 100% outline.18 Attendance Attendance 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. outline.19 Mid-Term Unsatisfactory Grades • UNC-C requires midterm unsatisfactory grades to be submitted by the end of the 8th week of class. • Mid term grades – Undergraduates: Satisfactory or D or F – Graduates: Satisfactory or C or U will be based upon all work graded by week 7, which probably will be two assignments and one class test. outline.20 Instructor Barry Wilkinson Woodward, room 435G Email: abw@uncc.edu Office Hours Tuesday/Thursday 3:00 pm - 4:30 pm. Walk-in at other times ok if not busy, or send me an email for a mutually convenient time. outline.21