CSCE 790: Parallel Programming Models for Multicore and Manycore Processors, Fall 2017

Department of Computer Science and Engineering, University of South Carolina


Basic Information

Textbooks

Course Description

Outline

Fundamentals and parallel programming practices for multicore and manycore processors including general purpose multicore CPU, Graphic Processing Unit (GPU) manycore accelerator and Intel Xeon Phi manycore processor. Compiler and runtime techniques for mapping high-level parallel programming models to the three machine architectures mentioned before. Topics include: processor architecture of multicore CPU, NVIDIA GPU manycore accelerator, and Intel Xeon Phi manycore; parallel programming using OpenMP and CUDA threading models for the three types of processors; compilation and runtime techniques based on LLVM compiler; and performance optimization techniques and application study using computation kernels for imaging processing, deep learning and scientific simulations. The course include a significant portion of programming exercises to create software solutions for ongoing research problems that use CPU, GPU and Xeon Phi systems in heterogeneous systems.

Overview

Multicore CPU, NVIDIA GPU and Intel Xeon Phi manycore are the three major processor architectures used in today's parallel and high performance computing system, and OpenMP and CUDA are the top two programming models for these three architectures for computational and data science applications. This course will introduce the architectures of the three types of processors, the two programming models and how they are used for high performance computing applications. The course will then shift to the topics covering the implementation challenges in compiler and runtime systems for mapping high-level programming models to low-level hardware capabilities and features, including runtime task scheduling, memory management and data movement for using GPU accelerators, vectorization, synchronization, etc. The course will be organized as half-lecture and half-project. Course projects will be based on real research problem and will give students opportunities for hands-on development of software tools and applications for using the three architectures.

Prerequisites:

This is an advanced graduate level course. Preliminary courses and experiences of computer architecture, programming languages and compiler, system or parallel programming, data structure and operating systems, fluent programming using C and self-motivated learning attitude are essential for students’ success in this course.

Course Objectives

Following completion of the course, students should be able to:

Course Delivery Structure

There will be two 75-minute lectures per week, which constitutes 100% of the course delivery. There will be no separate labs, and there are no plans for distance learning.

Course Assignments and Projects

There will be two regular homework assignments for each student in the first part of the course, about four to five weeks. The class will then be organized into multiple groups, each of which has two or three students working on a research problem as the course project focusing one of the three architectures. Each group will be responsible for collecting materials, presenting the project topic, work on the project and creating project report. The outcome of each group includes documents and materials related to the topic, software implementation of the project, project presentation, and a project report. The work of each project will be split into three to four tasks; each has a deadline to finish. All the class will participate in the lecture, presentation and discussion of the course topics and projects. Accesses to multicore CPU, NVIDIA GPU and Intel Xeon Phi will be provided for students during the semester.

Projects

Grading Scheme

Letter Grade Correspond to Score Percentage as Follows:

Letter Percentage
A 90-100
B+ 86-90
B 80-86
C+ 76-80
C 70-76
D+ 66-70
D 60-66
F 0-60

Schedule

3 09/04 Monday Labor day
09/06 Wednesday 3 OpenMP Parallel and Worksharing for TLP OpenMP OpenMP Programming Assignment 1
4 09/11 Monday 4 OpenMP Tasking and Data Environment
09/13 Wednesday 5 OpenMP Performance Optimization and Best Practices
5 09/18 Monday 6 OpenMP Implementation in LLVM and Intel Compiler
09/20 Wednesday 7 Project Brainstorming Assignment 1 Due
6 09/25 Monday 8 Programming with PThreads PThreads PThreads Examples, POSIX Threads Programming from LLNL Assignment 2, forkjoin.c, Due 10/11
09/27 Wednesday 9 Texas Instruments TDA2x and Vision SDK/OpenVX TI TDA2x and Vision SDK/OpenVX
7 10/02 Monday 10 Programming with PThreads Mutex and Condition Variable
10/04 Wednesday 11 DLP with NVIDIA Manycore GPU GPU/CUDA Intro CUDA examples, GPU and CUDA programming
8 10/09 Monday 12 GPU Threading and CUDA GPU/CUDA Threading and Memory
10/11 Wednesday 13 GPU Threading and CUDA Assignment #2 Due
9 10/16 Monday (midpoint) 14 GPU Memory and CUDA Assignment #3 Due 11/03
10/18 Wednesday (Fall break on Thursday/Friday) 15 GPU Memory and CUDA GPU/CUDA Streaming, Library and Tuning
10 10/23 Monday 16 GPU (OpenMP and OpenACC) OpenMP/OpenACC for offloading
10/25 Wednesday 17
11 10/30 Monday 18
11/01 Wednesday 19
12 11/06 Monday 20
11/08 Wednesday 21
13 (SC17) 11/13 Monday 22
11/15 Wednesday 23
14 11/20 Monday 24
11/22 Wednesday Thanksgiving Holiday
15 11/27 Monday 25
11/29 Wednesday 26
16 12/04 Monday 27 Project Presentation
12/06 Wednesday (Last class) 28
17 12/11 Monday
12/15 Friday Project Report Due
18 12/18 Monday Last exam day (12/11 - 12/18)

Policies and Procedures

Homework and Project

The homework and project exercises are chiefly for your own benefit. You may collaborate and consult outside sources freely when doing the homework, but you must tell me who you are collaborating with. Please remember, however, that the best way to master the material is to try the exercises on your own, then submit your own work to get feedback on it. (You will get credit even if you do not solve the problem, as long as you make an honest effort.)

Due Date and Late Policy

Each assignment has a due date and a cutoff date. Assignment due 11:55PM on the date, cut-off date is 48 hours after the due date/time. You have a total of 7 "slip days" throughout the semester that you can use at your discretion to turn in programming assignments past the posted due date. Slip days are used in whole day increments. Once your slip days are consumed, late programming assignments will be penalized at 10% per day. Assignment submission will not be accepted after the cutoff date.

Class Policies

Reading and lectures: The students are expected to read all assigned material before the lecture begins and review the material after the lecture.

Attendance Policy:

There is no required attendance policy, but if for some reason you cannot attend class, you are responsible for any material covered during your absence. Late arrivals must enter the classroom quietly and discreetly.

Exams and Test:

Exam and tests, if there are, are given in class and are open-book/open-notes. You may use any printed materials you wish during the test, but you may not use electronic devices except for use as timepieces or legitimate use by disabled students with prior notice. No make-up exams will be given except under extreme circumstances (such as severe illness or death in the immediate family) in which case you must give me notice well before the exam if at all possible.

Academic Honesty:

Examination work is expected to be the sole effort of the student submitting the work. If a student collaborates with anyone on the homework (whether or not a student), all collaborators must be listed at the top of the first page. Students are expected to follow the Code of Student Academic Responsibility. Every instance of a suspected violation will be reported. Students found guilty of violations of the Code will receive the grade of F for the course in addition to whatever disciplinary sanctions are applied by the University.

Proper Use of Computing Resources:

Students are expected to be aware of the university policy on use of computing resources, including the Student Guidelines for Responsible Computing, as well as the college and departmental policies on proper use of computing resources. Every instance of a suspected violation will be reported.

Students With Disabilities:

Any student with a documented disability should contact the Office of Student Disability Services at 803-777-6142 to make arrangements for appropriate accommodations.