What is Inuktitut ?
In the context of cluster or grid computing numerous protocols and
interfaces exist to communicate between machines (Socket, MPI,
Madeleine, GM, ...). Inuktitut aims at defining a set of
application programming interfaces (API) in order to develop programs
that can be highly portable on different operating systems on top of
these interfaces. Inuktitut defines two classes of interface for
efficient exploitation of clusters of SMPs machines: the intra-node
parallelism between processors is managed using light weight processes
(threads) and the inter-node parallism between SMPs machines use
one-side operations to exchange messages.
Overview of Inuktitut
Inuktitut aims to provide a C++ interface for:
The protocols defined in Inuktitut are:
- Multithreading: we have defined a basic portability layer,
called PThread, which more or less a minimal union of the
best of POSIX 1003c Thread interface and Windows Thread interface.
- Communication: Inuktitut defines the concept of Network.
A Network is a set of interface for communication using different kind of active message. A node (a process) could be bound to a network. Each
neighbor nodes of one node of a network have an identifier, but no
assumption is made about a global name, e.g. a node does not
have necessarly a rank à la MPI.
Note that Inuktitut does not define rendez-vous on message (no
send-receive) operations, but only one-side operations.
- Active Message: a message is sent to a node on which it is
put on a stack before a call to a service is made. The stack (and
thus the message) is lost after the call to the service.
- Write and Signal: similar to the active message with the
exception that the message is put into memory regions defined by the the user through the call to a special function. The message remains persistant with respect to the call to the service and it is the responsibility of the programmer
to free the memory regions.
- Allocate Write and Signal: similar Write and Signal
protocol except that the network makes the allocation of the memory regions where to store the incomming message. The application is responsible for freeing the memory regions.
Moreover, Inuktitut defines a
library for collective communication using scalable algorithms
(chain-tree, alpha-tree, flat-tree) and mixed-algorithms using the best
algorithm for a range on input. This work is ongoing work and cannot be considered as stable at the moment.
Currently Networks have been implemented on top of:
- CORBA: we use CORBA to exchange data, due the protocols used in
Inuktitut, a very low overhead in implementation have been mesured.
- TCP/IP: we have build an implementation of our protocols directly
on top of TCP/IP.
- Myrinet-GM: this is an ongoing work and not yet available in current release.
How to spawn program in Inuktitut ?
A parallel launcher of processus, called Taktuk, was
developed. At the same time, it permits to spawn processus and build an
Inuktitut Network object.
Who is using Inuktitut ?
Inuktitut is mostly used by Athpascan.