Changes between Version 7 and Version 8 of Challenge


Ignore:
Timestamp:
03/12/19 03:56:58 (7 years ago)
Author:
siegel
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Challenge

    v7 v8  
    11
     2== A Dissemination Barrier ==
     3
     4Designing efficient barriers is a big problem in concurrency theory.
     5A barrier is a synchronization operation that is invoked by all threads or processes
     6in a concurrent system.  The defining property is that no process can leave
     7the barrier until every process has entered the barrier.  A barrier should also
     8be re-useable, i.e., it can be invoked more than once.
     9
     10The dissemination barrier works as follows.   There are n processes, numbered
     110 .. n-1.    The ordered is treated as cyclical.   The protocol goes through
     12ceil(log_2(n)) stages.   At stage i, each process sends a message to the process
     132^i to its "right", and waits to receive a message from the process 2^i to its "left".
     14The content of the message is irrelevant (and can be empty).
     15
     16Challenge 1: Design a dissemination barrier using MPI.  Verify it up to some
     17bound on the number of processes using CIVL. 
     18
     19Challenge 2: Design a dissemination barrier using semaphores.  Verify it up
     20to some bound on the number of threads using CIVL.
     21
     22In both cases, there should be a function named `barrier` (possibly with
     23parameters) that all processes/threads call in order to participate in a barrier.
     24The function could use global variables.
     25
     26In both cases, part of the challenge is to come up with an appropriate driver
     27that tests the barrier.   Try to develop the most universal (challenging) driver
     28you can.   Can you make one that guarantees the barrier is correct?
    229
    330== CIVL-C Reference ==