Project 2 (barrier synchronization) – Snapshot of my knowledge

The purpose of this post is to take a snapshot of my understanding before I begin working on project 2: implementing (two) synchronization barriers. Although I picked up some theoretical knowledge from both this course (i.e. advanced operating systems) and GIOS (i.e. graduate introduction to operating systems) on barrier synchronization, I actually never implemented barriers so I’m very much looking forward to working on this project and bridging the gap between theory and practice.

What I do know

  • Conceptual understanding of the various types of barriers (e.g. centralized, tree based, MCS, tournament, dissemination)
  • Purpose of sense reversal (i.e. determine which barrier one is in)
  • Advantages of using an MCS barrier over a dissemination barrier when using a shared memory bus due to serialization and lack of parallel messages

What I don’t know

  • What OpenMP is and how it is different than MPI. Are the two the same or related somehow?
  • How the various barriers will perform based on the architecture (i.e. 8 way shared multi-processor system)
  • How to hook the barriers into some higher level user application? Will I be using the barriers for a producer/consumer type of application? Will I need to write that application or just the barrier itself?
  • What primitives will be available? Will I need to leverage some hardware atomic operations (my guess is yes)