wen-king@cit-vlsi.Caltech.Edu (Wen-King Su) (02/09/88)
In article <3182@lll-winken.llnl.gov> brooks@lll-crg.llnl.gov (Eugene D. Brooks III) writes: >Anyone interested in a simulator for a scalable shared memory multiprocessor This article reminded me that I should repost a recent article because there are people who has professed never to read comp.hypercube. The article is about the Cosmic Environment which is developed in Computer Science department in Caltech. It is a portable and simple user interface for distributed-memory message-passing concurrent computers. It currently supports the iPSC1 (cube) and the Ametek 2010 (mesh). It also support a virtual concurrent machine that is really a collection of NFS connected UNIX workstations. In that sense, it can be used as simulator and debugger for M-P machines; and, in the dead of night, as a real performance machine with all the niceties of UNIX for each virtual node. The CE is not public domain, but it is distributed free of charge including the source codes. ====================================================================== 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 | \*------------------------------------------------------------------------*/