From: ssp@csl36h.csl.ncsu.edu (Santosh Pande)
Subject: Summary of responses - IPC on iPSC/860
Organization: Clemson University
Date: Wed, 29 Jul 92 0:23:06 EDT

	Hello Everybody,

	Here's a summary of responses I received about my posting : `IPC on
iPSC/860'. Thank you all for your input. 
	At the end of this posting you will find the description of an
environment called `TOPSYS' which allows management of tasks and other 
light-weight stuff, that may be useful. 

	-Santosh
	
     ----------------------- R E S P O N S E S----------------------------
--->From: bhatt@src.honeywell.com (Devesh Bhatt)

NX/2 does not support multiple processes in a processor, so the question of IPC
does not arise.  It is almost impossible to come up with a fix for this since
the process managment support just isn't there in the kernel.

One thing you can do is to use isends(), irecvs() and then use an ualarm()
handler to get the work done, using msgdone() calls.  This way you do not pay
the handling penalty on every message.  However, I am not sure whether NX/2
provides ualarm().  They do provide alarm(), but its units are in seconds.

--->From: prp@ssd.intel.com (Paul Pierce)

In most multicomputer applications it is relatively easy to synchronize message
passing with computation, since the messages are related to the computation. It
is not always so easy for a compiled approach, especially for unstructured
problems, since it is apparently quite difficult for a compiler to generate
both the send and receive sides of every message efficiently. This has led to
suggestions that a get/put message passing paradigm (rather than send/receive)
be supplied for use by compilers.

[ Yes, I completely agree with this. get() and put() paradigm will simplify a
lot of cross-reference resolution to be done by the compiler and the RTS.
It also avoids the compiled code to be littered with masktraps() to block 
incoming message's side-effects on current thread -Santosh]

--->From: Steve Aliff (swaliff@afterlife.ncsc.mil)

Just a word of warning; the hrecv() mechanisms are not very robust.
For example, you cannot reliably perform any system calls inside of
an hrecv() handler, e.g. "printf." Also, the asynchronous message
passing calls such as irecv() tend to break if they're invoked while
there is lots of CFS I/O going on.

I discovered both of these "features" when I first attempted to use
hrecv() and then attempted to use irecv() as a work-around to the
hrecv() bug. So I guess the bottom line to all this is that if
things don't work as you expect, it may be a system bug vice your
bug.

---->From: Scott Kohn (skohn@cs.UCSD.EDU)

You might find the following useful.  The TOPSYS people have implemented a light
thread library for the iPSC -- there may be others, but I haven't heard of them.
This is a tricky thing, since you have to hack the NX/2 kernel.

---->From: Steve Roy (ssr@ama.caltech.edu)

 To the best of my knowledge the only calls supported in NX are things
like hsend/hrecv, csend/crecv, and isend/irecv.  NX does NOT support
multiple processes per compute node.  
You might want to look into the Paragon Mach kernel stuff they're
working on.

---------------------------E N D  OF S U M M A R Y----------------------

------------------------------T O P S Y S------------------------------
This is to announce the availability of a new version of the TOPSYS
parallel programming environment developed at the Munich University of 
Technology (a.k.a. Technische Universitaet Muenchen).

What is TOPSYS?
---------------
TOPSYS (Tools for Parallel Systems) is a tool environment which is aimed at
providing support for all the phases of parallel program development. 
The design and implementation of TOPSYS was started in 1987. The
latest version consists of the following components:

* A programming library called MMK (Multiprocessor Multitasking Kernel).
  This library provides lightweight processes (tasks) as well as 
  communication objects (mailboxes) and synchronization objects (semaphores).
  Communication and synchronization between tasks is location transparent.
  Tasks, mailboxes and semaphores can be created statically (at program
  start) or dynamically during runtime.

* A parallel debugger called DETOP (Debugging Tool for Parallel Systems).
  DETOP is a true parallel debugger that provides a global view of the
  system. In addition to the functionality found in sequential debuggers,
  DETOP provides unique features such as distributed breakpoints and
  the monitoring of communication and synchronization events.

* A performance analysis tool called PATOP (Performance Analysis Tool for
  Parallel Systems). This tool supports performance measurements at different
  levels of abstraction. The first level examines the system's performance
  as a whole. The next level supports measurements for the different processing
  nodes which form the distributed system (e.g. processor idle time). The 
  finest level of granularity makes it possible to examine the performance
  in terms of objects of the programming model (e.g. cpu-time used by tasks).

* A visualization tool (VISTOP) which provides a graphical animation
  of task interaction (communication and synchronization) and can be used
  to find bugs or bottlenecks in the communication and synchronization
  structure (e.g. deadlocks).

* A software package called ALLOCCUBE which is useful for managing the
  space-sharing multiuser access to distributed memory multiprocessors
  in a network based environment.

All the tools are interactive and have a graphical user interface based on 
X-Windows and the Athena Widget set.

What platforms does TOPSYS run on?
----------------------------------

The first implementation was done on hypercube multiprocessors (iPSC/2,
iPSC/860). We now have an implementation on networks of SPARCstations.
The programming library will also be available for i860 based UNIX machines
(e.g. Alliant FX/2800). At the moment, TOPSYS is available for the following
configurations:

* iPSC/2 with Sun SPARC as "remote hosts"
* iPSC/860 with Sun SPARC as "remote hosts"
* SPARC (networks) under SunOS 4.1

How can I get additional information?
-------------------------------------

Postscript versions of papers and manuals describing the TOPSYS environment
can be found on the ftp server:

  topsys.informatik.tu-muenchen.de (131.159.0.156)

Log in as "anonymous" and look in the directory "topsys/public/papers". You'll
find a README describing the contents and compressed postscript versions
of the papers.

You'll also find a demo-version of the tools compiled for a Sun SPARC.
(file "topsys/public/misc/DEMO.tar.Z) These demos can be used to get a 
quick overview of the functionality of TOPSYS.

The installation guides for TOPSYS can also be found in the public-
directory. Check these documents if you have any doubts as to whether
TOPSYS can be used with your hardware configuration.

How do I get TOPSYS?
--------------------
In order to get binaries and/or sources for TOPSYS, you must fill out an
order form and a license agreement. A copy of these documents can be found
on our ftp-server (topsys.informatik.tu-muenchen.de (131.159.0.156), 
file 'topsys/public/license.txt' or 'topsys/public/license.ps.Z'). Send a signed 
copy of the license agreement to

                   Dr. Thomas Bemmerl
                   Lehrstuhl fuer Rechnertechnik und Rechnerorganisation
                   (Prof. Dr. A. Bode)
                   Technische Universitaet Muenchen
                   Arcisstrasse 21, Postfach 202420
                   8000 Muenchen 2
                   GERMANY

In exchange, we'll send you the password which will enable you to download
the software from our ftp server. After receiving the password:

   - ftp to topsys.informatik.tu-muenchen.de (131.159.0.156).
   - Log in as anonymous
   - type 'site group topsys'
   - type 'site gpass <password>'
   - cd topsys/nonpublic

You'll find a README file describing the contents of the directory.

(Note: In order to download the TOPSYS/X and MMK/X software from our ftp-server
you need a version of 'ftp' that understands the 'site' commands. If you
do not have this version, you can retrieve it from our ftp-server:

  - ftp to topsys.informatik.tu-muenchen.de (131.159.0.156).
  - Log in as anonymous
  - cd topsys/public/misc/ftp
  - You'll find a README, the ftp-binary for the SPARC and the sources
    for the new ftp-version)

If you have any further questions, please send e-mail to:

bemmerl@informatik.tu-muenchen.de (Dr. Thomas Bemmerl)

Newsgroups: comp.parallel