The criteria for obtaining the credit and passing the exam are summarized in the following. Please, read them carefully. In case any rules are not clear, contact the teacher by Mattermost.
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).
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 git repository before given deadline. After a deadline, each student will be given read access to a repository of another student and will be required to perform a review of his/her classmate's solution (that includes testing functionality, assessing speedup, and performing code review). Serious problems with functionality or code design will be reported back as Gitlab issues and these issues must be fixed by the repository owner (a.s.a.p.). The whole review process will be supervised by teacher to ensure quality and fairness.
There are no explicit qualitative constraints for passing (such as minimal exact speedup); however, a solution should be working, 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 are mandatory as well as performing the reviews. If you fall back 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.
After three intermediate assignments, there will be one final assignment. In this assignment, the 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 maximal speedup, preferably utilizing the entire parlab and/or gpulab.
The main criterion is whether the solution reaches the expected speedup; however, the actual speedup may be different for different combinations of technologies. The code itself will not be reviewed thoroughly, only to verify that declared parallel technologies were actually used.
The exam will be oral 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 individual preparation, the student will present the answers to the teachers. The grade will be determined mainly from the quality of the answers during the exam; however, the teachers may choose to reflect the quality of the home assignments as a secondary criterion, especially in borderline cases.