NPRG058: Advanced Programming in Parallel Environment
Grading
The criteria for obtaining the credit and passing the exam are summarized below. Please read them carefully. If any rules are unclear, contact the teacher via Mattermost.
- The credit is awarded for completing all (3+1) home assignments.
- The exam is oral, with written preparation, and the credit is required to attend the exam. If more students enroll in the course than expected, the teacher reserves the right to grade only the written preparation and invite only some students to the oral part of the exam (i.e., cases that need additional clarification).
Please make sure you complete your assignments and attend the exam in the winter term. There will be no exam terms in summer (and definitely not in September).
Intermediate home assignments
There will be three regular home assignments (CPU-related, GPU-related, and MPI-related). You are obliged to solve all three assignments and push each solution to the prepared GitLab repository before the deadline. After a deadline, each student will be given read access to another student's repository and will be required to perform a review of their classmate's solution (including testing functionality, assessing speedup, and reviewing the code). Serious problems with functionality or code design will be reported as GitLab issues, which must be fixed by the repository owner as soon as possible. The whole review process will be supervised by the teacher to ensure quality and fairness.
There are no explicit qualitative constraints for passing (such as a minimum speedup); however, a solution should work, be sufficiently well written, and exhibit at least decent performance (the definition of which will be clarified in labs) to pass the review.
All three assignments and the reviews are mandatory. If you fall behind and cannot keep up with the outlined deadlines for serious reasons (e.g., illness), contact the teacher immediately to negotiate an alternate plan. Later attempts to solve the assignments will not be allowed.
Final assignment
After the three intermediate assignments, there will be one final assignment. In this assignment, students are allowed to use any technology or framework for parallel and distributed computing (e.g., OpenMP, OpenMPI, Spark, CUDA, OpenCL). The main requirement is to combine at least two different technologies (e.g., CUDA and OpenMPI) to utilize as much hardware as possible. The objective is to achieve maximum speedup, preferably by utilizing the entire Parlab and/or a reasonable part of Chimera (e.g., all Volta servers).
The main criterion is whether the solution reaches the expected speedup; however, this criterion may vary for different combinations of technologies. The code itself will not be reviewed thoroughly, only to verify that declared parallel technologies were actually used.
Exam
The exam will be conducted in small groups. Each student will randomly select a question from each of the three groups (covering all parts of the course). After a short written preparation, the student will present the answers to the teachers. In the case of a larger number of students, the teacher reserves the right to grade the written preparation (especially in cases where the written materials are completely correct or completely incorrect). The grade will be determined mainly by the quality of the answers during the exam; however, the quality of the home assignments may be used as a secondary criterion in borderline cases.