The basic configuration of the mpC programming environment includes a compiler, a runtime support system (RTS), a library, and a command-line user interface. All these components are written in ANSI C.
The mpC compiler translates an mpC program into an ANSI C program with calls to RTS. The compilation unit is a source mpC file. The mpC compiler uses optionally either the SPMD model of target code, when all processes constituting a target message-passing program run the identical code, or a quasi-SPMD model, when the source mpC file is translated into two distinct target files: the first one is for the host process and the second one is for the other processes.
RTS manages the computing space and provides all necessary communications. RTS encapsulates a particular communication package (currently, a small subset of MPI). It ensures platform-independence of the other compiler components.
The library consists of a number of useful nodal, network, and basic functions.
The user interface consists of a number of commands for creation of a VPM and execution of mpC applications on the VPM. The creation of a VPM includes detection of the performance characteristics of the NoC that are saved in a file used by RTS. The VPM creation command runs a special parallel program detecting the number of processors in each SMP computer of the NoC, the speed of the processors, as well as the speed of communication links connecting the computers (optionally).
All processes constituting the target program are divided into two groups—a special process, a dispatcher, playing the role of the computing space manager, and ordinary processes, nodes, constituting the computing space. The dispatcher works as a server accepting requests from nodes. Notice that the dispatcher does not belong to the computing space.