Applications written to use our DSM system make use of the parmacs macros, which were developed at ANL. The macros provide platform independence to the application, enabling it to run on software DSM as well as hardware DSM systems without modification. These macros provide a minimum set of primitives that are necessary in order to program a shared memory application.
The protocol implements the multi-threading model by ``forking'' one process on each node of the cluster. Each process will execute at least one application thread. The threads will share the address space within the process as well as across the forked processes using software DSM. Since Linux doesn't provide a remote fork, we provide the ``illusion'' of this by starting the same executable on each node using rsh. Each remote process executes the same code as the initial process did before spawning, to initialize static data, making it coherent across nodes.