Writing portable applications for MIMD (multiple-instruction, multiple
-data) architectures has proven to be more difficult than writing sequ
ential software. This is due in large part to the lack of easy-to-use,
high-level abstractions. Mentat is an object-oriented parallel proces
sing system designed to directly address the difficulty of developing
architecture-independent parallel programs. Its fundamental objectives
are to provide easy-to-use parallelism, achieve high performance via
parallel execution, and facilitate the portability of applications acr
oss a wide range of platforms. The premise underlying Mentat is that i
t is the lack of appropriate abstractions that has kept parallel archi
tectures difficult to program and hence made them inaccessible to main
stream, production system programmers. The Mentat approach combines a
medium-grain, data-driven computation model with the object-oriented p
rogramming paradigm. The data-driven computation model supports high d
egrees of parallelism, while the use of the object-oriented paradigm p
ermits hiding much of the parallel environment from the programmer. Th
e Mentat system consists of two components, the Mentat Programming Lan
guage (MPL) and the Mentat runtime system. The MPL is an object-orient
ed programming language based on C++. The programmer is responsible fo
r identifying those classes, called Mentat classes, whose member funct
ions are of sufficient computational complexity to allow efficient par
allel execution. Instances of Mentat classes are used like C++ classes
. The data and control dependencies between Mentat class instances inv
olved in invocation, communication, and synchronization are detected a
nd managed by the compiler and runtime system without programmer inter
vention. Mentat is available via anonymous FTP and has been implemente
d on Sun workstations, the Silicon Graphics Iris, the Intel iPSC/2, an
d the Intel iPSC/860. This article presents the Mentat programming lan
guage, including several examples, the Mentat virtual machine architec
ture, and performance results for two applications on two of the suppo
rted architectures, a network of Sun 3 workstations. and the Intel iPS
C/2.