You don't need to own an XMP-64 to try it out; all the example programs can be run on the simulator and inspected using the trace output (There's another project you can use). It's all pretty experimental though so it won't be obvious to begin with what is or is supposed to be happening. Also the compiler hasn't been extensively tested so it might not be particularly robust but in any case, it should all be quite interesting to look through.This project is an implementation of a simple imperative programming language called sire that allows the creation and placement of processes across a system at runtime. It includes a complete compiler and accompanying runtime targeted at XS1 devices, but in particular the XMP-64.
In essence, a sire program is compiled into a binary that is loaded only onto node 0, core 0 but when it executes, it is able to transmit descriptions of processes to remote cores in the system and invoke their execution. This is provided in the language by the 'on' statement. For example, the statement 'on 5 do process()' is exactly the same as a regular call 'process()' except that it is executed on the remote core 5, leaving the original core free to get on with other work.
For more details on all of this, a readme file is included in with the source code explaining how to get started with the source code and there are two accompanying documents:
- sire language definition
- sire language implementation notes
Please post up any comments or criticisms - I'm looking forward to hearing what people think!