EE548 High Performance Computing
This document is an agreement between EE548 students and the instructor. You must read and understand it. We will discuss important points in the first course.
The EE548 course is taught by Dr. Vincent Roberge. You will find my contact information here. I will publish this course outline, the course schedule and all other course information under this website. The website is protected by a password. You will be able to browse the different pages, but when you click on a link to download a file, it will ask you for a username and password. These credentials will be given to you during the first class.
The main objectives of the course are to provide the students with:
- The fundamentals of HPC and parallel programming;
- A process and practical experience in parallelizing programs for HPC systems;
- A throughout understanding of design considerations when designing parallel programs;
- Significant practical experience on GPU programming using CUDA and shared memory system using OpenMP and on distributed systems using MPI.
- Exposure to the latest research in the field of HPC
The official course description, as published in the graduate calendar, is as follows:
“High Performance Computing (HPC) can solve very large computational problems by aggregating computing power and memory capacity to deliver much higher performance than a single computer could ever provide. Programming HPC systems requires a comprehensive understanding of computer architecture and parallel programming. This course introduces the fundamentals of HPC and parallel computing with a significant emphasis on applied programming. It covers fundamental techniques for developing HPC applications, the commonly used HPC platforms with a strong focus on Graphics Processing Units (GPUs), performance measurement and analysis, shared memory and distributed systems, parallel decomposition, parallel patterns and primitives, data locality, load-balancing and several other topics. This course includes numerous programming assignments. Students completing this course will be able to design efficient parallel algorithms and will be able to program GPUs using Compute Unified Device Architecture (CUDA®), shared memory systems using Open Multi-Processing (OpenMP), distributed systems using Message Passing Interface (MPI) and supercomputers using all of the above. Other parallel programming languages may be covered in the course.”
The course is organized as a series of formal lectures supplemented by readings and laboratories. This is to develop an understanding of HPC theory and techniques and to gain practical experience. The laboratory work is critical to the learning of the students and the effort required should not be underestimated. Each laboratory will require between 5 and 10 hours to complete. The course also includes a written critique of a research paper and a student project and presentation which is discussed in more details below.
- 6 to 7 laboratory reports;
- Project report;
- Project presentation; and
- Written critique of a research paper in HPC.
Lab instructions are posted on the course schedule on this website. For each lab, a complete lab report must be submitted. This report must include an introduction, a high-level description of the implementation, a self-explanatory description of the test and results, a discussion and a conclusion. The lab report must contain sufficient details to demonstrate that the work was completed successfully.
Each student is required to complete a course project using parallel programming on a shared-memory system, distributed systems or GPU. The project can be completed individually or in teams of two and must include a significant hands-on component. Typical projects consist of parallelizing a known algorithm, verify the correctness of the parallel implementation and measure the speedup achieved. The students will be required to submit a project proposal midway through the term, a project report at the end of the term and give an oral presentation during the last two weeks of the term.
Research Paper Critique
Each student is required to select a research paper in the field of HPC and write a 2-page critique of the paper. The paper must come from a reputable journal or conference and must be recent. The aim is to introduce the students recent research topics in HPC. The critique must include background theory, a summary of the paper and a critique of the paper.
There are two textbooks for this course. The first one in mandatory. The second on is used as an additional reference and is strictly optional.
- D. Kirk and W. Hwu. “Programming Massively Parallel Processors”, 4rd edition, Morgan Kaufmann, Cambridge, MA, 2022.
- G. Barlas. “Multicore and GPU Programming”, 2nd Edition, Morgan Kaufmann, Cambridge, MA, 2022, 1011p.
The final mark will be weighed as follows:
- 55% Labs
- 15% Project report
- 10% Project presentation
- 15% Paper review
- 5% Participation
To pass the course, students must have completed all the course works and obtained an overall mark of 70% or more.
Presence in the classroom is important as the material presented in the lecture is necessary to complete the labs. Students will also be encouraged to ask questions in class about difficulties they are encountering in the labs. This gives an opportunity for the instructor to help the entire class.
Academic integrity violation, including cheating, plagiarism and any form of violation of academic ethics, may result in sanctions ranging from a recorded caution to the expulsion of the program. RMC regulations on academic integrity, section 23, define plagiarism as “Using the work of others and attempting to present it as original thought, prose or work. This includes failure to appropriately acknowledge a source, misrepresentation of cited work, and misuse of quotation marks or attribution; Failure to acknowledge adequately collaboration or outside assistance and; Copying.” You should familiarize yourself with the regulations about academic integrity available in the Graduate Studies Calendar.
All material provided by your instructor is subject to copyright and is intended only for your use within the context of your course. You are not authorized to distribute such material by any means without written permission. It is a departure from academic integrity to electronically record the entirety or any part of a class or to distribute, publicly post, sell or otherwise disseminate an instructor’s course materials or to provide an instructor’s course materials to anyone else for distribution, posting, sale or other means of dissemination, without the instructor’s express written consent. Any unauthorized recording of classes or distribution of course materials will be treated as a violation of academic ethics and investigated under the applicable Academic Integrity regulation and could be subject to other disciplinary or legal processes.