MPC Communication Kernel : MPC-OS
-
Online old version 3.0 of MPC-OS installation
guide - new version 4.2 is under construction
-
Old version 3.0 of MPC-OS installation guide in postscript
form
-
Online old version 3.0 of MPC-OS programming
guide - new version 4.2 is under construction
-
Old version 3.0 of MPC-OS programming guide in postscript
form
-
A paper about MPC-OS, published at RenPar'10, in postscript
and HTML form
MPC-OS contains about 40000 lines of mixed C/C++/perl/shell/XWindow
software featuring :
-
source and binary distribution available for FreeBSD-3.x
-
self configuration and compilation of the package (automake/autoconf)
-
basic kernel communication layers : hsldriver, PUT, SLR/P,
SLR/V
-
optimized implementation of secure layers
: DDSCP, RFCP, SFCP, MICP - Slides
available online (HTML)
-
advanced memory locking system (wiring the ranges of virtual addresses
during inter-nodes DMA)
-
multithreaded Object Request Broker development toolkit
-
manager for negociation of resources (built on top of the multithreaded
ORB). The Loader daemon handles task activation. The manager handles new
task activation (throw communications with the Loader daemon), application
classes creation (task managment), channel negociations between tasks and
allocation/deallocation of kernel data structures for communication end-points.
-
Automatic computation of routing tables from a description of the
topology of the network
-
many external daemons and programs (monitoring, benchmarking,
etc.) :
-
hslclient (RPC transport and configuration client)
-
hslserver (RPC transport and configuration server)
-
getevents (kernel events retriever)
-
vmspace (memory analyser)
-
init_pcibus (configuration of PCI bus)
-
readpci (read from PCI configuration space on a device)
-
writepci (write to PCI configuration space on a device)
-
readphys (direct read in physical memory)
-
writephys (direct write in physical memory)
-
dumpPCIDDC (dump the internal tables used by PCIDDC)
-
dumptables (dump internal tables used by SLR/SCP)
-
testputbench (benchmark and test program for layer PUT)
-
testputrecv (test program for layer PUT)
-
testputsend (direct access to PUT API)
-
prot_dump (dump the MPC-OS vm map entries used to wire data)
-
prot_garbcoll (start a garbage collection inside the MPC-OS vm map entries)
-
mpcview : a graphical XWindow interface to manage PCIDDC
-
user-level layer PUT (useraccess library)
-
MDCP, a new layer on top of SLR/P, provides read/write primitives without
any callback function to handle (easier to use than lower level kernel
layers - Note that MDCP is still `zero-copy' if the write() primitive is
called before the read() one)
-
SELECT implementation to wait for events on file descriptors and channels
in the same time
-
libmpc : user level library allowing the user to make requests to the manager
(spawn tasks, channel allocation...) and to the MDCP kernel layer
-
libsocketwrap is a shared object that wraps the socket API and maps those
syscalls into libmpc calls. This library can be dynamically linked into
any application to provide a binary compatible port to MPC-OS. libsocketwrap
has been tested with the MPICH implementation of MPI, on a 2 nodes MPC
computer (testbench : distributed computation of PI). libsocketwrap needs
a little work to become fully functionnal with other high level toolkits
-
many examples of use (addlpe, fetchobj, on, off, receivelpe, testrecv,
testrecv2, testrecv2wait, testrecvv, testsend, testsend2, testsend2wait,
testsendv, testuseraccess, vmtest, prot_wire)
-
emulator of PCIDDC and RCube chips on top of Ethernet for people
wanting to start developing on MPC, without having any MPC computer
The team of B.
Folliot developed at LIP6 a distributed swap kernel module on
top of SLR/P, presented in a paper (P.
Cadinot, N. Dorta, B. Folliot - 48Kb) published in RenPar'97. |