Newsgroups: comp.parallel
From: schooler@apollo.hp.com (Richard Schooler)
Subject: Parallel Tools Survey
Organization: HP/Apollo Massachusetts Language Lab
Date: Mon, 18 Oct 1993 13:44:23 GMT

  I haven't gotten anything in a while, so here goes.  My original
question was:

What tools exists for industrial (non-research) parallel programming?

In more detail, if you have experience trying to develop real
applications on parallel architectures (shared-memory multiprocessors,
massively-parallel machines, workstation clusters, etc.), what is your
view on the level of support for such activities?  What tools do the
hardware vendors supply?  Are there third-party solutions?
Public-domain software?  What are the most useful tools?  Any details
on why you found particular tools good or bad would be very helpful.

Here the (non-commercial) responses:

==================================================

I have implemented an eigenvalue solver on 2 different platforms:
An nCUBE-2 and a cluster of SUN4 workstations.
On the nCUBE-2 I used their "native" environment. They have some additional
software from Express for implementing certain communication primitives
very efficiently and for performance tunning. They have a debugger that I
was not able to figure out.

On the cluster I used PVM (versions 2.4 and 3.1). Debugging is a nightmare.
There are no tools for performance tunning. I haven't tried Xab yet. 
From what I have seen in the literature it is a good debugger.

For performance tunning, I have been creating my own trace files in
PICL format. At the end of the program those trace files (kept in memory
to avoid disturbances) are dumped into a file that can be observed
with Paragraph. It helped enormously. Paragraph is an excellent tool.

PVM, PICL and Paragraph are public domain tools.

There is a committee (MPIF) that is drafting a standard for message
passing systems. Such a standard will be extremely useful.

Your partners at CONVEX are very active in PVM customization.

==================================================

What tools are there for programming multiprocessors?  Outside of
tools specific to certain scientific applications or database
applications my experience is that there is C-threads and maybe
C++/threads if you are lucky.

If you are really lucky, the C compiler has no bugs, and on miraculous
systems the operating system is pretty stable too.

Here, when I say C, I mean C and probably Fortran too.

My best experience has been on the the Cray machines.  Stable OS,
stable compilers, good perf. analysis tools.  Unfortunately, these
machines are hardly ever available in multiprocessor mode.  Mostly
they are in "partitioned to run lots of batch jobs in parallel"-mode.
UniCOS is kind of wierd, and lack of VM makes interactive use awkward.
But overall, a very nice system.

Next in line is the KSR-1.  Less stable compilers, less stable OS, and
lousy processor performance.  But, not bad overall.  No tools other
than C-threads and some loop parallelization stuff that probably
doesn't work well (never tried it).  They have some profiling stuff
and very good support for standard UNIX tools, since their OS is
standard UNIX.

The TMC machines are pitifully bad.  They are in a constant revolving
beta-release.  Nothing ever works and the new release of the OS or compilers
always breaks all existing code.

Don't know about Intel machines, but I can't imagine that they'd be
much better than TMC.

The Maspar is a nice environment on a bad architecture.  The
processors are just too small to be useful on big problems.  They have
a nice parallel C, good profiling and debugging tools and a pretty
stable OS environment.

I don't know what's around for MP workstations.  I think that's where
the interesting work is to be done, because the machines have a stable
base to work from...good tools should be coming along.

==================================================

A good starting point might be the survey report by Louis Turcotte:

/parallel/reports/misc/soft-env-net-report.tar.Z
	Report: "A Survey of Software Environments for Exploiting Networked
	Computing Resources" by Louis Turcotte <turcottte@wes.army.mil>
	covering over 60 distributed and other networked software environments
	(150 pages). Announcement of report contains author contact details.

Available via anonymous ftp from unix.hensa.ac.uk

==================================================

	Greetings! Sometime back I came to know about a tool MENTAT which
they call it Object Oriented Programming tool for Parallel
Programming. Also I found out some people are using it in the
industry to develop applications in FEA in a workstation cluster.
MENTAT is a Public domain tool developed and available in Univ.
of Virginia. I never used it and don't know how good it is. But
if you want to know more, it is available in the following location
through anonymous ftp.

	uvacs.cs.virginia.edu      /pub/mentat  -> the software is here

				/pub/techreports -> contains couple
of reports CS91-07, CS91-31 and 32 which will give you more details.

	 There are not many tools to develop software in parallel computers.
I am a graduate student and I did lot of programmimg in CM -5 both using C* 
and CMMD message passing libraries. There is PRISM in CM-5 which helps in 
debugging and profiling.But I found it useful in C* and it is not good while 
using CMMD.But my feeling is there are no good tools to program in CM-5. Still
many of these tool developments are in the research project level as sometime
back I saw a project description in Univ. of Wisconsin for developing
tools for CM-5 and Intel Paragon. 

==================================================

        -- Richard
        schooler@apollo.com
