Github classroom for the exercises

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:

Accept assignment
Optional

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.

Accept assignment
Recommended

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!

  1. Register to the Workshop’s event
  2. Set up a Text Editor or an IDE for OpenFOAM development.
  3. Have a working OpenFOAM installation.
  4. Clone our unit-testing framework and make sure it works for you.
  5. 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

Accept assignment
Recommended

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.

Accept assignment
Recommended

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!

Accept assignment
Recommended

Activity 03: Blocking P2P Comms are not good for your health

Identify deadlocking when you see it; and try to fix the code.

Accept assignment
Recommended

Activity 04: Non-Blocking P2P comms for swapping operations

Process-to-neighbour communication made easy! Send data over processor boundaries.

Accept assignment
Recommended

Activity 05: Collective comms - Reference cells

Which processor has the reference cell? Not really that important, but nice to know!

Accept assignment
Recommended

Activity 06: Parallel comms for custom data types

Introducing how to send lists of custom data objects which fit into random-access lists.

Accept assignment
Recommended

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

Accept assignment
Recommended

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.

Accept assignment
Recommended

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!