A global object name space for the Intel hypercube

The Intel iPSC and iPSC®/2 concurrent computer systems provide the processing power and memory to solve very large parallel programming problems. However, their distributed memory and large grain process model complicate the implementation of object oriented programs. As part of the Interwork II Concurrent Programming Toolkit, software facilities have been constructed for the management of a large number of objects (up to 2**32) in a global object name space. This simplifies the Pisces' programming model by allowing uniform access to objects from any node within the hypercube. Objects are dynamically created and destroyed, and two methods of object access are provided. First, a process can gain exclusive access to an object using the Open_obj procedure; the object migrates to the process's local node as a side effect. A second and more efficient access method is to execute one of an object's associated procedures using the Apply procedure. The current implementation transports the procedure name and arguments to the node on which the object resides for execution; a copy of the code exists on every node. Interwork II uses the global object name space to support a distributed, lightweight process model. This allows processes to be uniformly accessed throughout the cube. Additional objects for inter-process communication are also provided. The global object name space is implemented in a fully distributed manner in order to eliminate performance bottlenecks. Techniques for caching object references to further speed up object access are described.