Skip to content
Adrian edited this page Sep 13, 2021 · 1 revision

Home

The Parallel Pattern Language (PPL) compiler is a tool for optimizing structured parallel programming. Its key features are the integration of parallel patterns in the syntax of the programming language and an optimization tool, which enables the automatic mapping of the source code to a cluster with respect to an elaborated set of global optimizations. The project is currently focused on the Parallel Pattern Language, which is a domain-specific language designed as the input language of the PPL compiler. A C front-end is in progress.

This wiki is intended to explain the details about the implementation of the programming language and the optimization tool. It thereby focuses on aspects of the usage, functionality and best practices, which should allow a new developer to use and extend the tool. Explanations about the mathematical details of the algorithms and the general concepts can be obtained from the according publications:

The section states a brief tutorial on how to setup the project and execute first PPL programs.

The section explains everything necessary for writing PPL programs.

The section defines the hardware language, which is used to provide the information about the cluster and the target architectures to the optimization tool.

The section defines the central data structure of the optimization tool, the abstract pattern tree (APT). The APT is a tree representation of parallel algorithms allowing for efficient static analysis on a global level. In contrast to an ordinary abstract syntax tree (AST), the APT summarizes local parallelism in form of parallel patterns.

The section contains an explanation of the implementation and functionality of the optimization algorithms. In particular, a summary of best practices is provided, which is necessary to find a good setting for the hyperparameters.

This section defines the extended intermediate representation (IR) in form of the Abstract Mapping Tree (AMT). The AMT, much like the APT, is a parallel pattern based tree structure representing a parallel algorithm. Other than the APT, the AMT also incorporates the optimization results into the data structure.