Overall Objectives
View by sections

Application Domains
Contracts and Grants with Industry
Other Grants and Activities
Inria / Raweb 2003
Project: PARIS

Project : paris

Section: Software

Keywords : Grid , middleware system , CORBA , data parallelism .


Participants : André Ribes, Christian Pérez, Thierry Priol.


Christian Pérez



Prototype under development.


Yet to be decided.


The PaCO++ objectives are to allow a simple and efficient embedding of a Spmd code into a parallel CORBA object and to allow parallel communication flows and data redistribution during an operation invocation on such a parallel CORBA object.

PaCO++ provides an implementation of the concept of parallel object applied to CORBA. A parallel object is an object whose execution model is parallel. It is accessible externally through an object reference whose interpretation is identical to a standard CORBA object.

PaCO++ extends CORBA but not to modify the model because we aim at defining a portable extension to CORBA so that it can be added to any CORBA implementation. This choice stems also from the consideration that the parallelism of an object appears to be an implementation issue of the object. Thus, the Omg Idl is not required to be modified.

PaCO++ is made of two components: a compiler and a runtime library.

The compiler generates parallel CORBA stub and skeleton from an Idl file which describes the CORBA interface and from an Xml file which describes the parallelism of the interface. The compilation is done in two steps. The first step involves a Java Idl-to-Idl compiler based on SableCC, a compiler of compiler, and Xerces for the Xml parser. The second part, written in Python, generates the stubs files from templates configured with inputs generated during the first step.

The runtime, currently written in C++, deals with the parallelism of the parallel CORBA object. It is very portable thanks to the utilization of abstract APIs for communications, threads and redistribution libraries.

Current status:

PaCO++ is still in a development phase. A public version should be released during the winter 2003-2004. PaCO++ has been successfully tested on top of three CORBA implementations: Mico, omniORB3 and omniORB4. Moreover, it supports PadicoTM.

The current version of PaCO++ includes 7,600 lines of Java (ca. 252 kB), 6,900 lines of Python (ca. 390 kB), 13,400 lines of C++ (ca. 390 kB) and 2,200 lines of shell, make and configure scripts (66 kB).

PaCO++ is supported by the French ACI GRID RMI. Non-public beta versions are currently used by several French projects: ACI GRID HydroGrid, ACI GRID EPSN and Rntl VTHD ++.