Monday June 16, 2014
A distributed memory algorithm is an algorithm that uses multiple computational processes that perform tasks in parallel but do not have shared access to the same data. To access each other's data, processes must send messages over a network. Your task is to modify an existing serial algorithm to target distributed memory.
The "Precipitate Algorithm Solution txt" file below contains a serial algorithm for a model of precipitating particles. Your task is to modify this algorithm so that it can be executed by multiple processes working together at the same time. In particular, you should indicate:

1) For each step, whether the step should be executed by a single process or multiple processes.
2) Where the synchronization points are, at which an individual process cannot advance until all processes reach that point.
3) Which data needs to be sent over the network in messages.

Keep in mind that processes can only access each other's memory if they receive data in messages. Each send of a message should have a matching receive, or the receiving process will be stuck waiting, unable to advance.

Some steps cannot occur in parallel if there are dependencies between the steps. See the solution to a previous challenge problem for these: http://hpcuniversity.org/students/weeklyChallenge/73/

A solution will look like the serial algorithm, annotated with notes about items 1, 2, and 3 above.

For reference, you can also look at the solution for the shared memory (in contrast to distributed memory) version of the algorithm here: http://hpcuniversity.org/students/weeklyChallenge/75/
Show solution
Challenge Resources:
©1994-2020   |   Shodor   |   Privacy Policy   |   NSDL   |   XSEDE   |   Blue Waters   |   ACM SIGHPC   |   feedback  |   facebook   |   twitter   |   rss   |   youtube   |   XSEDE Code of Conduct   |   Not Logged In. Login