ParaSail Programming Language

ParaSail is a new parallel programming language designed to support the development of inherently safe and secure, highly parallel applications that can be mapped to multicore, manycore, heterogeneous, or distributed architectures. Javallel and Parython are versions of the ParaSail technology adapted for Java and Python.

ParaSail LLVM-based Compiler

With this version, we are making our first release of the ParaSail llvm-based compiler. Prior to this release, ParaSail was based on an interpreter for the ParaSail "virtual machine" (PSVM). With this release, we now have a translator from PSVM instructions to LLVM instructions, and from there to object code. The translator was written in ParaSail itself, by Justin Hendrick (Cornell 2016) during a summer 2014 internship in Boston.

ParaSail Introduction

ParaSail stands for Parallel Specification and Implementation Language. As implied by its full name, ParaSail is for both specifying and implementing parallel applications. As such, it includes high-level specification features, including parameterized modules with full separation of interface from implementation, pre- and postconditions for individual operations within a module, invariants that apply across all operations within a module, and constraints that apply to individual instances of a module.

ParaSail provides support for both implicit and explicit parallelism. Every ParaSail expression is defined to have parallel evaluation semantics. That is, given a ParaSail expression like F(X) + G(Y), the language rules ensure that it is safe to evaluate F(X) and G(Y) in parallel. The compiler makes the decision based on complexity or other criteria whether a given computation should be created as a potentially parallel activity. An underlying scheduler then maps these potentially parallel activities to particular processing resources, by default using a work-stealing approach, which provides load balancing across processors while also providing good locality of reference and minimal cache contention.

The primary approach to ensuring the safe parallelism is by simplification of the language, with the elimination of features that interfere with safe parallelization. In particular, ParaSail:

Writings on ParaSail

Here are some introductory articles and other documentation on ParaSail:

ParaSail, Javallel, and Parython Documentation and Download

Here is the latest download and reference manual:

Comments or Questions

Please direct your comments or questions to the Google Group for ParaSail:

Examples

code_for_website.png

See the blog or download ParaSail (above) for more examples.

Subject to change. ParaSail is a work in progress.

FrontPage (last edited 2015-03-11 22:14:10 by sttaft)