The goal of the DOSMOS project is to build a new concept of Distributed Shared Memory System (DSM) which mixes efficiency and ease of programming.
If distributed memory MIMD machines allow very high performances, their programming remains ``esoteric'' for most of end-users accustomed to classical mono-processor programming. Oppositely, shared memory parallel computers are easier to program but badly adapted to applications generating many memory accesses. In this context, the purpose of Distributed Shared Memory (DSM) systems is to implement, above a distributed memory architecture, a programming model allowing a transparent manipulation of shared data. Thus, in practice, a DSM system has to handle all the communications and to maintain the coherence of the shared data.
Though various DSM systems have been proposed, few of them allow to efficiently and scalably deal with massively parallel multi-processors. The DOSMOS system is based on a structural approach of parallel programming. In other words, DOSMOS propose to the user to hierarchically structure the processes into groups and sub-groups of processes sharing a same set of variables. This feature, combined with optimized weak consistency protocols allows to reduce the amount of communications required for the management of the shared data, and, as a consequence, to ensure efficiency and scalability to the applications.
However, it would be unrealistic to argue that DOSMOS, or any other DSM system, efficiently deals with any kind of applications. That is why DOSMOS allows the programmer to mix both message-passing (PVM) and DOSMOS code.
Furthermore, from the programmer point of view, DOSMOS, as any DSM system, appears as a ``black box'' since no information is available concerning the actual communications. Thus, in the lack of monitoring facilities, optimizing or debugging a DSM application is extremely difficult, especially for non-expert programmers... who are yet a ``target'' privileged by DSM systems. Hence, DOSMOS integrates a devoted monitoring system, called DOSMOS-Trace tool . In the same way as for DOSMOS, DOSMOS-Trace has been designed to ensure scalability and performance. Attention has particularly been focused on the minimization of the intrusion due to the monitoring.
At last, this programming environment has been designed to work both on distributed systems and on parallel machines. Thus, to ensure the portability of both the system and the applications, DOSMOS (as well as DOSMOS-Trace) has been developed on top of PVM.
What is a Distributed Shared Memory System ?
A parallel programming environment based on DOSMOS
DOSMOS in French