Github classroom for the exercises
On this page
All activities during the workshop’s hands-on sessions will be prepared as assignments. This page holds the complete list of offered activities/exercises.
First, let’s start by the introductory ones:
Git & Github Fundamentals
A basic fast-paced course to get you familiarized with Git and Github in general - Provided by Github Classrooms. Please go through the README.md file after you accept this assignment if it's your first time using Git/Github.
Introducing foamUT to solve future exercises
A basic exercise to get you familiarized with the recommended workflow of solving future exercises. It'll walk you through changing exercise code and making all of its tests pass in serial and parallel.
At this point, you’ve completed all preparation tasks and you’re ready for the hands-on sessions!
- Register to the Workshop’s event
- Set up a Text Editor or an IDE for OpenFOAM development.
- Have a working OpenFOAM installation.
- Clone our unit-testing framework and make sure it works for you.
- Solve a demo exercise so you get familiarized with the typical workflow during the hands-on sessions (You’ll need no knowledge from the workshop for this).
⇩ Description of all activities
Introductory activities
Activity 01: Blocking P2P Comms - A first look
Explore how to do basic blocking P2P communication by collecting a list of values from all processes on the master process.
Activity 02: Collective Comms - A first look
Understand the concepts of collective comms, away of the complexity of OpenFOAM code; by checking for prime numbers!
Activity 03: Blocking P2P Comms are not good for your health
Identify deadlocking when you see it; and try to fix the code.
Activity 04: Non-Blocking P2P comms for swapping operations
Process-to-neighbour communication made easy! Send data over processor boundaries.
Activity 05: Collective comms - Reference cells
Which processor has the reference cell? Not really that important, but nice to know!
Activity 06: Parallel comms for custom data types
Introducing how to send lists of custom data objects which fit into random-access lists.
Activity 07: Special comms for custom data types
Advanced communication of custom types which have references as data members with the help of linked lists.
Tiny projects
Project 01: Parallelizing a coded fvOptions source
Apply a lot of what you learned in this workshop in a real-world setup. From the ground up; your task is to figure out what's wrong with the code and fix it in your own way! Note that this is a group project, up to 3 people can collaborate to work on this thing.
Project 02: MPI code profiling for load-balancing
Venture into raw MPI calls. Your task is to figure out how to measure time spent on communication in whole CFD simulations! You can even count how many MPI calls were made!