[comp.hypercube] CE

wen-king%cit-vlsi.Caltech.Edu@ames.arc.nasa.gov (Wen-King Su) (01/27/88)

For those of you who missed a brief introduction at HCCA3, the Cosmic
Environment (CE) is a generic message-passing concurrent computer
control environment consisting of a set of daemon processes and user
utilities.  The goal of CE is to provide a simple and uniform interface
to concurrent machines and to allow for the writing of truely portable
application programs.  CE is a distributed environment directly
accessible from any UNIX machine connected to the same TCP/IP network.

Key Features:

    1) Space sharing for large machines.  Multiple users can be
       assigned disjoint sets of nodes in the same concurrent machine.

    2) Interactive environment.  Allocation and deallocation is cheap
       and fast.  It takes one command to display the list of all
       available concurrent machines and their allocation status, one
       command to get the machine you want, and one command to free it.

    2) The same set of programming primitives are available on all
       concurrent machines that CE supports, making the writing of
       portable programs possible and worthwhile.  The set of message
       primitives are kept simple to keep the message handling overhead
       at a minimum.

    3) The same set of programming primitives are available and can be
       used on all hosts in the same LAN, whether or not the host is
       physically connected to a machine.  You can run your programs
       distributes across many hosts and utilize devices and resources
       not directly attached to the assigned concurrent machine.  It
       takes only one function call and two arguments to become part of
       a computation.  Processes send messages to each others using
       process ID, not channels.  Message passing transparent across
       machine boundaries.

    4) A set of function, initialized at run time according to the
       concurrent machine used, helps reduce the problem of converting
       the representation of integer and floating point values.

The CE currently support the following machines:

    1) iPSC/1
    2) Ametek 2010
    3) The Cosmic Cube
    4) A set of NFS connected work stations pretending to be a
       real concurrent machine.  Most people use SUN work stations.
       People around here call such a cube a "ghost cube".

    We will support CE on any new iPSC as well as any other concurrent
    machines we have access to.

Other features:

    1) File IO from node process to the user's host.  Yes, you can even
       do it from inside a iPSC/1.  All stdio functions are available.

    2) Unix debugger for node processes running on a "ghost cube".
       Since programs are interchangible at source level between
       different machines, you can fully debug your program on a
       "ghost cube" before running it on a real cube.

    3) Remote compiler for specific systems.  For instance, if you have
       an iPSC that is attached to a 310 box, you do not have to log in
       to the 310 to compile your programs.  Simply keep everything on
       which ever machine you prefer and run the speedy compiler front
       end provided with CE.  The front end will take care of all the
       transactions to make it looks like the compilation is actually
       taking place on your machine.  The compiler uses a separate
       server on the 310 instead of the sluggish rsh/rcmd interface.

    4) It polished by 4 years of intensive use.  Best of all - it is free.

You can obtain a programming guide from us by sending electronic mail
to chuck@vlsi.caltech.edu.  The programming guide will describe the
procedure for obtaining the CE source.  The CE is available to most
research institutes without charge.  The only language currently
supported by CE is C.  Additional languages, as well as CE for specific
machine manufactures will be available separately from them.  Currently,
Ametek is the only company using CE as the basic control environment.

Sample session:

I am on a sun work-station called neptune.

$ peek
 CUBE DAEMON version 7.2, up 6 days 23 hours on host sol

    { } 7d ipsc cube  , b:0000 [  mars :iPSC d7] 56.3m
    { } 3d ghost cube , b:0000 [saturn :mimic  ]  2.1h
    { } 3d cosmic cube, b:0000 [ venus fly trap] 23.4h

$ cat > hello.c

#include <cube/cubedef.h>
main() { print("Hello World!!"); }

$ ccipsc -o hello hello.c -lcube	## Compile for the iPSC cube
hello.c ==> o10261o2.c			## produces hello.ipsc

$ getcube 3 ipsc			## This will force 7d iPSC to
3D sub-cube allocated			## partition into smaller cubes

$ peek
 CUBE DAEMON version 7.2, up 6 days 23 hours on host sol

    {group wen-king} 3d ipsc cube  , b:0000 [neptune :iPSC d7]  3.0s
    {              } 3d ipsc cube  , b:0008 [   mars :iPSC d7] 57.7m
    {              } 4d ipsc cube  , b:0010 [   mars :iPSC d7] 57.7m
    {              } 5d ipsc cube  , b:0020 [   mars :iPSC d7] 57.7m
    {              } 6d ipsc cube  , b:0040 [   mars :iPSC d7] 57.7m
    {              } 3d ghost cube , b:0000 [ saturn :mimic  ]  2.1h
    {              } 3d cosmic cube, b:0000 [  venus fly trap] 23.4h

 GROUP {group wen-king}  TYPE reactive  IDLE 1.0s

    ( -1  -1)    SERVER   0s   0r   0q   [neptune 5337]  2.0s
    ( -1  -2)  FILE MGR   0s   0r   0q   [neptune 5336]  3.0s
    (--- ---)   CUBEIFC   0s   0r   0q   [   mars 5292]  3.0s

$ spawn hello -1			## Load the program
7,0: Hello World!!
6,0: Hello World!!
5,0: Hello World!!
4,0: Hello World!!
3,0: Hello World!!
2,0: Hello World!!
1,0: Hello World!!
0,0: Hello World!!
hello spawn ed in all nodes with pid 0
$
freecube				## release the cube
Cube space deallocated

$ peek
 CUBE DAEMON version 7.2, up 6 days 23 hours on host sol

    { } 7d ipsc cube  , b:0000 [  mars :iPSC d7] 58.1m
    { } 3d ghost cube , b:0000 [saturn :mimic  ]  2.1h
    { } 3d cosmic cube, b:0000 [ venus fly trap] 23.4h

$ ccgh -o hello hello.c -lcube		## Compile it for the ghost cube

$ getcube 3 ghost
3D sub-cube allocated

$ peek
 CUBE DAEMON version 7.2, up 6 days 23 hours on host sol

    {              } 7d ipsc cube  , b:0000 [   mars :iPSC d7] 58.9m
    {group wen-king} 3d ghost cube , b:0000 [neptune :mimic  ] 10.0s
    {              } 3d cosmic cube, b:0000 [  venus fly trap] 23.4h

 GROUP {group wen-king}  TYPE reactive  IDLE 1.0s

    ( -1  -1)    SERVER   0s   0r   0q   [neptune 5354 ]  2.0s
    (--- ---)   CUBEIFC   1s   1r   0q   [ saturn 15989]  7.0s

$ cps -ah						## Display host names
  0 saturn  udp:14 retry:0 /arpa/wen-king/cguide
  1 neptune udp:11 retry:0 /arpa/wen-king/cguide
  2 mercury udp: 7 retry:0 /arpa/wen-king/cguide	## Our ghost cube
  3 pluto   udp: 8 retry:0 /arpa/wen-king/cguide	## is made up of
  4 pallas  udp: 7 retry:0 /arpa/wen-king/cguide	## theses sun
  5 astraea udp: 7 retry:0 /arpa/wen-king/cguide	## work-stations
  6 uranus  udp: 7 retry:0 /arpa/wen-king/cguide
  7 vesta   udp: 5 retry:0 /arpa/wen-king/cguide

$ spawn hello -1
7,0: Hello World!!
6,0: Hello World!!
1,0: Hello World!!
2,0: Hello World!!
4,0: Hello World!!
3,0: Hello World!!
5,0: Hello World!!
0,0: Hello World!!
hello spawned on all nodes with pid 0

$ freecube
Cube space deallocated

$ cccos -o hello hello.c -lcube		## Compile it for cosmic cube
hello.c ==> o10271o2.c
Code  size: 1897
Data  size: 60
Stack size: 4096

$ getcube 3 cosmic
3D sub-cube allocated
$ spawn hello -1
0,0: Hello World!!
1,0: Hello World!!
2,0: Hello World!!
3,0: Hello World!!
4,0: Hello World!!
5,0: Hello World!!
6,0: Hello World!!
7,0: Hello World!!
hello spawned in all nodes, pid 0 

$ peek
 CUBE DAEMON version 7.2, up 6 days 23 hours on host sol

    {              } 7d ipsc cube  , b:0000 [   mars :iPSC d7]  1.0h
    {              } 3d ghost cube , b:0000 [ saturn :mimic  ]  2.1h
    {group wen-king} 3d cosmic cube, b:0000 [neptune fly trap] 16.0s

 GROUP {group wen-king}  TYPE reactive  IDLE 2.0s

    ( -1  -1)    SERVER    8s    8r   0q   [neptune 5367] 14.0s
    ( -1  -2)  FILE MGR    0s    0r   0q   [neptune 5366] 14.0s
    (--- ---)   CUBEIFC   10s   90r   0q   [  venus 637 ] 15.0s

$ freecube
Cube space deallocated

$ ls
hello.c		hello.cos	hello.gh	hello.ipsc
/*------------------------------------------------------------------------*\
| Wen-King Su  wen-king@vlsi.caltech.edu  Caltech Corp of Cosmic Engineers |
\*------------------------------------------------------------------------*/