The evaluation is tailored around the course's learning outcomes. The students are expected to demonstrate they acquired the skills listed in the learning outcome and will be evaluated based on the Crowd Simulation project divided in four assignments (and solved in groups during the weekly labs) In addition to the presentation of each assignment during the labs, there will be a final oral presentation and a final report. At the end of the oral presentation of each team, the members of the team will be asked questions on how the topics taught in the course have been applied to parallelize the Crowd Simulation with Collision Avoidance. 1 Construct parallel algorithms, ie, identify parallelism in a given algorithm, implement this parallelism, and identify factors that limit the parallelism in a program or algorithm. - Given a sequential algorithm, transform it into a parallel algorithm, exposing at least one of the parallelization opportunities: data parallelism, task parallelism, vectorization. Explain the choice of parallelization and reason why other forms of parallelism are not possible. - Identify all sources of parallelism, including combibations of data parallelism, task parallelism and vectorization. - Identify bottlnecks and factors that limit parallelism (eg dependences) and solutions to overcome such limitations (eg a new task scheduling). - Given a certain algorithm reason which of the parallel programming paradigms is the most suitable one, discussing the advantages and disadvantages of each parallelization method. 2 Explain key issues of parallel programming, including data distribution, load balancing, locking and synchronization. - Ensure correctness of execution, by using appropriate synchronization methods. - Identify performance bottlenecks, such as data distribution and load balancing, and suggest solutions to reduce them; for example, finer or coarser granularity tasks, different scheduling policies. - Design, implement and evaluate such advanced solutions to reduce or alleviate the performance bottlenecks. - Reason about the characteristics of the algorithms that lead to such performance bottlenecks and which are optimal choices in terms of the parallel programming paradigms, granularity, distribution, synchronization, etc. 3 Compare several parallel programming frameworks in terms of performance and efficiency of development; |