Barcelona Supercomputer Center (Centro Nacional de Supercomputacion)

The StarSs programming model exploits task-level parallelism based on C/Fortran directives. It consists of a few OpenMP-like pragmas, a source-to-source translator, and runtime system that schedules tasks to execution preserving dependencies among tasks. Instantiations of the StarSs programming model include:

Tailored for Grids or clusters. Data dependence analysis based on files. C/C++, Java

COMP Superscalar (COMPSs) is a new version of GRID Superscalar that aims to ease the development of Grid applications. It exploits the inherent parallelism of applications when running in the Grid. The main objective of COMP Superscalar is to keep the Grid/Cluster as transparent as possible to the programmer. With COMP Superscalar, a sequential Java application that invokes methods of a certain granularity (tasks) is automatically converted into a parallel application whose tasks are executed in different resources of a computational Grid/Cluster. COMPSs also offers a binding to C.

Cell Superscalar (CellSs) addresses the automatic exploitation of the functional parallelism of a sequential program through the different processing elements of the Cell BE architecture. Based on a simple annotation of the source code, a source to source compiler generates the necessary code and a runtime library exploits the existing parallelism by building at runtime a task dependency graph. The runtime takes care of the task scheduling and data handling between the different processors of this heterogeneous architecture. A locality-aware task scheduling has been implemented to reduce the overhead of data transfers.

While Grid Superscalar and Cell Superscalar address parallel software development for Grid environments and the Cell processor respectively, SMP Superscalar is aimed at ”standard” (x86 and like) multicore processors and symmetric multiprocessor systems.

SMP superscalar (SMPSs) addresses the automatic exploitation of the functional parallelism of a sequential program in multicore and SMP environments. The SMPSs programming environment consists of a source to source compiler and a supporting runtime library. The compiler translates C code with the aforementioned annotations into common C code with calls to the supporting runtime library. Then it compiles the resulting code using the platform C compiler. Tailored for SMPs or homogeneous multicores, Altix, JS21 nodes, Power5, Intel-Core2. C or Fortran.

The programming model introduced by StarSs and extended by GPUSs allows the automatic parallelization of sequential applications. A runtime system is in charge of using the different hardware resources of the platform (the multi-core general-purpose processor and the GPUs) in parallel to execute the annotated sequential code. It is responsibility of the programmer to annotate the sequential code to indicate that a given piece of code will be executed on a GPU.

GPUSs basically provides two OpenMP-like constructs to annotate code. The first one, directly inherited from StarSs, is used to identify a unit of work, or task, and can be applied to tasks that are just composed of a function call, as well as to headers or definitions of functions that are always executed as tasks. The second construct follows a recent proposal to extend the OpenMP tasking model for heterogeneous architectures, and has been incorporated in GPUSs.

Distributed in source code form and must be compiled and installed before using it. The runtime library source code is distributed under the LGPL license and the rest of the code is distributed under the GPL license.

Additional info: