.

101 Parallel Programming Languages

.

Copyright Greg Pfister 2008

.

.

initial lists came from:

.

"Nan's Parallel Computing page":http://www.cs.rit.edu/~ncs/parallel.html

.

Jonathan Hardwick's "Supercomputing and Parallel Computing Research Groups"http://www.cs.cmu.edu/~scandal/research-groups.html

.

They are, of course, not to be held responsible for the content here.

.

Note that this list is incomplete and inexact, as well as being obsolete the minute I created it.

.

Its purpose is simply to make the point that a many parallel languages have been developed.

.

.

Datewho/wherelanguageDescription

.

ABCPLAn object-Based Concurrent Language. Model of concurrency based on parallel active objects.

.

1983DoDADAThe Ada language of DoD fame

.

AdlData parallel functional programming languages for distributed memory architectures.

.

AdsmithObject-Based DSM Environment on PVM.

.

AlewifeLarge-scale multiprocessor with shared memory and message passing.

.

1990NYUALLOYsupport functional, object oriented and logic programming styles in a unified and controlled framework.

.

AMActive Messages. Simple primitives exposing full hardware performance to higher communication layers.

.

AMDCActive-Message Driven Computing. Computational model and system based on computation at abstract locations, and built on active messages.

.

APARParallel Architectures group. Portable parallel programming environment, parallel 3D terrain analysis and visualization.

.

AppLeSApplication Level Scheduling. Scheduling agents for resource control on production heterogeneous systems.

.

AutomapTask parallel coordination language for dynamic applications.

.

1987BLAZELanguage for shared-memory using data distribution descriptions

.

BSPBulk Synchronous Parallel model research group.

.

1994U. WiscC**extends C++ for large-grain data parallelism; syntax defining aggregate operations, reductions, and subset selection (slices).

.

C4Canonical Classes for Concurrency Control. C++ classes for parallel programming.

.

1992Cal TechCC++parallel programs to be developed from simpler components using sequential, parallel, and concurrent composition.

.

ChantA talking threads package -- lightweight threads communicating between processors.

.

1995UIUCCharmA Portable Concurrent Object Oriented System based on C++

.

CidParallel extension of C that provides a programming model of MIMD threads plus shared objects.

.

1998MITCilkEfficient execution of multithreaded computations.

.

1998SGICo-Array Fortranexplicit notation for data decomposition, such as that often used in message-passing models; decomp to be added to F95

.

1996UTCODEabstract declarative graphical environment for parallel programming

.

CodeVisual parallel programming system.

.

1993UIUCConcurrent Aggregates languagedynamically-typed concurrent object-oriented language for programming large-scale parallel machines;a programming model similar to Actors

.

Concurrent Pascal

.

Concurrent Prolog

.

CraftCray's parallel programming language ("better than HPF")

.

CRLC Region Library. All-software distributed shared memory system.

.

1978OxfordCSP(Communicating Sequential Processes) language for describing patterns of interaction. It is supported by an elegant, mathematical theory, a set of proof tools, and an extensive literature

.

1996U. ParmaCUBLconcurrent object language

.

1994DartmouthDappleC++ class library designed to provide the illusion of a data-parallel programming language on conventional hardware

.

DDDDynamic Distributed Data. Parallel programming model based on dynamic graph-like datastructures.

.

1985Eiffel SoftwareEiffelOO-based parallelism; one of the first

.

1995ErlangErlangfunctional programming, programmer-explicit messages, transparent distribution

.

ExcaliburCompiling array-oriented languages onto parallel machines.

.

Express

.

1984ICOTFGHC(Flat Guarded Horn Clauses) a concurrent logic language, that supports committed-choice non-determinism and stream communication

.

FMFortran M. Task-parallel extensions to Fortran; integration of task and data parallelism.

.

Fork95C-based parallel programming language, targetted at SB-PRAM.

.

1995Fortran 95introduced FORALL, parallel do-loop; and INDEPENDENT directive for DO loops

.

1991Rice, CTFortran DFox & Kennedy: a language extension for distributed-memory systems. This is later one of the parents of High Performance FORTRAN (HPF).

.

1978IBMFPJohn Backus’ original functional programming language (some claim it was penance for Fortran)

.

FxParallelizing Fortran compilers and applications.

.

GAGlobal Arrays. Shared-memory programming interface for distributed-memory computers.

.

1993NRAOGlishC++ library for distributed applications

.

GLUGranular Lucid. Programming system for constructing parallel and distributed applications.

.

1990U. GlasgowHaskellpolymorphicly typed, lazy, purely functional language based on Lambda calculus

.

1999UIUCHPC++A standard model for parallel programming using C++.

.

1993RiceHPFHigh Performance Fortran. Data-parallel and data distribution extensions to Fortran.

.

1996UIUCICC++object-oriented programming style (fine-grained data structures and concurrency) which supports a wide variety of irregular and regular parallel applications.

.

1978UCIrvineIdArvind's original Dataflow language (originally "Irvine Dataflow"), moved to MIT.

.

1996ErlangenJavaPartyextends the capabilities of Java to distributed computing environments.

.

1997WoTUGJavaPPintroduces the CSP/occam model into Java threads

.

1976ONERALAUStatic dataflow language for the LAU machine

.

1995LucentLimboa programming language intended for applications running distributed systems on small computers

.

Linda - Ada-lindaLinda in Ada

.

Linda - GlendaLinda on PVM

.

Linda - JavelinDistributed Linda Using Java

.

1985YaleLinda OriginalThe original language of get & put tuples and operating on them

.

Linda - POSYBLpublic-domain implementation of the Linda parallel processing environment,

.

1977Lucidfunctional language making iteration "mathemetically respectable"; became dataflow language

.

U VAMentatObject-oriented parallel language based on C++

.

Modula-2*High-level explicitly parallel imperative programming language.

.

RASmpCA parallel superset of C for programming distributed memory machines built on MPI

.

MPC++Massively Parallel, Message Passing, Meta-level Processing C++ designed to exploit multithreading and message-driven execution on RWC-1 MPP .

.

2001U AZMPDC extension supporting all three of multithreaded, parallel, distributed programming.

.

1980MITMultilispA version of the Lisp dialect Scheme extended with constructs for parallel execution.

.

CMUNESLSCANDAL - Super Compilers and Advanced Languages. Nested data parallel languages (NESL), efficient parallel algorithms.

.

1984OxfordOccamThe canonical language expession of Hoare's CSP

.

OOF90High performance object-oriented programming in Fortran 90.

.

OrcaParallel programming language for distributed systems, based on shared data-object model.

.

2004U.Edinb.P#Concurrent Prolog for .NET

.

P3LSkeleton-based parallel programming language with template-based implementation.

.

Para++Portable C++ bindings for message passing libraries.

.

U. StuttgartParallaxis-IIIA Structured Data-Parallel Programming Language

.

1995UTParlanceLisp extension supporting medium-scale parallelism on SMPs.

.

1986Imp. Coll.ParlogAn AND-parallel Prolog, with guards and committed choice nondeterminism

.

INpC++/Sage++Portable parallel C++ for high performance computers.

.

PETMessage passing, parallel I/O, checkpointing, and run-time tools and monitoring.

.

PETScPortable, Extensible, Toolkit for Scientific Computation. Parallel software for the numerical solution of PDEs.

.

pHA parallel, eagerly-evaluated version of Haskell.

.

1987UWPRESTOC++ based environment for writing object-oriented parallel programs for shared-memory multiprocessors.

.

ProteusPrototyping language and environment for high-level parallel programs.

.

1996UCB / ICSIpSatherextends Sather (OOL) with threads, synchronization and data distribution

.

PSIParallel algebraic reductions on array expressions based on psi calculus.

.

1989ORNLPVMParallel Virtual Machine. Programming a heterogeneous network of machines as a single distributed memory parallel machine.

.

1998EPFLsC++C++ with a very few new keywords defining active objects and synchronization primitives

.

DelftwareScripticexpression based extension to Java, targeted at shared memory systems; extras mainly founded on the theory of Process Algebra;

.

1983LLNLSisalDataflow / functional language

.

Split-CParallel extension to C with global address space for distributed-memory multiprocessors.

.

SRSynchronizing Resources. Concurrent programming language.

.

1997MITStar-P Parallel MATLABMATLAB modified to exploit parallelism in its output evaluation forms; now at Interactive Supercomputing of Waltham,MA

.

SynergyParallel programming using passive object flow.

.

NEUTOP-CTask-oriented Parallel C.

.

UCA set-based data-parallel programming language.

.

uC++Light-weight concurrency in C++.

.

1999UCB/LBNLUPCUnified Parallel C

.

VNested data-parallel extension of C.

.

1979MITVALValue-oriented Algorithmic Language; a dataflow language; iteration and error handling, lacking in recursion and I/O

.

1996ZH MicroZ++object-oriented extension of C++ to multi-threading and distributed computing.

.

ZPLPortable data-parallel array language for scientific and engineering computation.

.