From: mentat@uvacs.cs.Virginia.EDU (mentat project)
Subject: Mentat 2.0 Available
Originator: grimshaw@elf.cs.Virginia.EDU
Keywords: Object-oriented, parallel, C++
Organization: University of Virginia Computer Science Department
Date: Thu, 28 Jan 1993 15:11:46 GMT


Mentat: Easy-to-use Object-Oriented Parallel Processing

We are pleased to announce the release of Mentat v2.0 - a parallel
object-oriented computing environment based on C++ developed at the
University of Virginia, available FREE via anonymous FTP.

---- What is Mentat? ----------

Mentat is an object-oriented parallel processing system designed to
directly address the difficulty of developing architecture-independent
parallel programs. The fundamental objectives of Mentat are to (1) provide
easy-to-use parallelism, (2) achieve high performance via parallel
execution, and (3) facilitate the portability of applications across a
wide range of platforms. The Mentat approach exploits the object-oriented
paradigm to provide high-level abstractions that mask the complex aspects of
parallel programming, including communication, synchronization, and
scheduling, from the programmer. Instead of managing these details, the
programmer concentrates on the application. The programmer uses application
domain knowledge to specify those object classes that are of sufficient
computational complexity to warrant parallel execution. 

Mentat combines a medium-grain, data-driven computation model with the
object-oriented programming paradigm and provides automatic detection
and management of data dependencies.  The data-driven computation model
supports high degrees of parallelism and a simple decentralized control,
while the use of the object-oriented paradigm permits the hiding of much
of the parallel environment from the programmer.  Because Mentat uses a
data-driven computation model, it is particularly well-suited for message
passing, non-shared memory architectures.

There are two primary aspects of Mentat: the Mentat Programming Language
(MPL) and the Mentat run-time system.  The MPL is an object-oriented
programming language based on C++ that masks the difficulty of the
parallel environment from the programmer.  The granule of computation
is the Mentat class member function.  The programmer is responsible for
identifying those object classes whose member functions are of sufficient
computational complexity to allow efficient parallel execution.  Instances
of Mentat classes are used exactly like C++ classes, freeing the programmer
to concentrate on the algorithm, not on managing the environment.  The
data and control dependencies between Mentat class instances involved
in invocation, communication, and synchronization are automatically
detected and managed by the preprocessor and run-time system without
further programmer intervention.  By splitting the responsibility between
the compiler and the programmer, we exploit the strengths and avoid the
weaknesses of each.  The underlying assumption is that the programmer can
make better decisions regarding granularity and partitioning, while the
compiler can better manage synchronization.  This simplifies the task of
writing parallel programs, making parallel architectures more accessible
to non-computer scientist researchers.

The run-time system supports parallel object-oriented computing on top of
a data-driven, message-passing model.  It supports more than just method
invocation by remote procedure call (RPC).  Instead the run-time system
supports a graph-based, data-driven computation model in which the invoker
of an object member function need not wait for the result of the computation,
or for that matter, ever receive a copy of the result.  The run-time system
constructs program graphs and manages communication and synchronization.
Furthermore, the run-time system is portable across a wide variety of MIMD
architectures and runs on top of the existing host operating system.  The
underlying operating system must provide process support and some form of
inter-process communication.

Mentat has been distributed to over 50 sites in the US and abroad, and
has been successfully applied to a wide-variety of real-world problems.
We invite new users who wish to learn more about Mentat to write to us
for documentation at

	mentat@Virginia.EDU

The Mentat system is available FREE via anonymous FTP.  The systems
supported in this release are the Sun 3, the Sun 4, Silicon Graphics
Iris, and the Intel iPSC/860 (gamma).

---- Brief synopsis of this release ----------

Mentat Runtime System
	- more runtime error reporting
	- faster kernel
	- more efficient use of regular objects
	- new utilities and options

MPLC compiler
	- bug fixes, much more robust
	- select/accept construct supported
	- create() may be overloaded by programmer
	- single inheritance supported for Mentat classes
	- more error checking
	
Application support
	- Mentat version of matrix and vector arithmetic class
	- General C++ version of array and vector classes
	
Supported Platforms
	- Sun 4 (Sparc)
	- Sun 3
	- Silicon Graphics Iris
	- Intel iPSC/860 (requires Sun-based C++ cross-compiler)
	- Intel iPSC/2 is available only by request
	- RS/6000, CM-5, Paragon expected second quarter '93.

Documentation
	- Improved users manuals
	- New tutorial with "load-and-go" starter programs
	- On-line manual pages


Future directions: 
   Our plans for Mentat fall into four categories: applications
   development, system enhancement/maintenance, platform expansion,
   and support for heterogeneous "meta-systems."

Applications development: 
   We are collaborating with applications scientists in a wide 
   variety of areas to test ease of use and performance.  We invite 
   participation in this effort. A partial list includes:
	A parallel database management system.
	A general purpose, extensible, stencil algorithm class, used for
	  image convolution
	  iterative PDE solver
	DNA & protein sequence comparison.
	VLSI automatic test pattern generation.
	Genetic algorithms.
	Minimal Steiner trees.
	2D electromagnetic finite element method.
	Ray tracing.
   This list represents a diverse set of applications. Both
   functional and data parallelism is being exploited, often in
   the same application.

System enhancement/maintenance: 
   This includes not only fixing bugs and improving performance, 
   but changing the language to better support applications programmers. 
   In particular changes that ease the cognitive burden whenever possible.

Platform expansion: 
   A new generation of parallel machines are here. We are currently
   testing a version of Mentat on the CM-5, and we will port to the
   Paragon as soon as it is available for general use.  We expect our
   support of high-end workstations to expand.  Our next targeted platform
   is the IBM RS/6000.

Meta-systems support:
   Applications portability is only the first step. Our objective is
   to support (not just enable) application execution on heterogeneous
   systems comprised of both heterogeneous workstations and parallel
   processors. Our early work with SGI's and Sun IPC's indicates that
   problem decomposition and scheduling are more important than ever. We
   expect heterogeneous workstation support to be part of the standard
   distribution by Spring.  For more information on this aspect of the
   project see University of Virginia, Computer Science TR CS-92-43.


Newsgroups: comp.parallel