[comp.parallel] CE Available for iPSC/2

wen-king@csvax.caltech.edu (Wen-King Su) (04/15/89)

The Cosmic Environment (CE) is a generic message-passing multicomputer
control environment consisting of a set of daemon processes, user
utilities and compiler libraries.  The goal of CE is to provide a
simple and uniform interface for multicomputers 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.  CE is now available for iPSC/2.

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 is 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) iPSC/2
    3) Symult (formerly Ametek) 2010
    4) The Cosmic Cube
    5) 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".

    CE will also be available for the N-cube machines.

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 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.
       The iPSC/2 uses the the 301 for remote compilation.

    4) It polished by 5 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
    { } 16n s2010      , b:0010 [ metis :ginzu  ] 27.4m
    { }  4d ipsc2 cube , b:0000 [triton iPSC2   ]  8.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
    {              } 16n s2010      , b:0010 [ metis :ginzu   ] 27.4m
    {              }  4d ipsc2 cube , b:0000 [triton iPSC2    ]  8.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
    { } 16n s2010      , b:0010 [ metis :ginzu  ] 27.4m
    { }  4d ipsc2 cube , b:0000 [triton iPSC2   ]  8.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
    {              } 16n s2010      , b:0010 [ metis :ginzu   ] 27.4m
    {              }  4d ipsc2 cube , b:0000 [triton iPSC2    ]  8.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
    {              } 16n s2010      , b:0010 [ metis :ginzu   ] 27.4m
    {              }  4d ipsc2 cube , b:0000 [triton iPSC2    ]  8.4h

 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