Matt Follett

The Unity Model

I’m reading Parallel Programming Design:  A Foundation by Chandy and Misra for a master’s class and am finding it very interesting.  The book covers the Unity Model as an approach towards parallel programming.  The language used to model solutions to a problem isn’t meant to be directly implemented as a language (though it has been incarnated as PCN) but instead to be used as a model for implementing the solution in some other language.  It is a fun language and hopefully now that I don’t have a presentation looming over my head I can explore it independently and post some example.

The language is broken up into several parts:

  1. Declare - used for declaring variables
  2. Always - used for defining functions
  3. Initially - used for initializing variables
  4. Assign - the main portion of the code

The reason why initialization doesn’t happen in the main portion of the code is that there is no guarantee that it would happen when you would want or that it would only happen once.  In fact, the assignment section of the program has very weak promises.  It only guarantees that when the program is executing any given line that any other line will eventually be executed if the program is run forever.  Other than that it just randomly picks statements to execute. 

By the way, the book has been out of print for a while now, so it isn’t the easiest to find for cheap and is impossible to find new.  I ordered it three times used from third parties before someone finally actually had it in stock and shipped it to me.