NinaHerrmann / skepu

SkePU open source distribution

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

pipeline status coverage report

SkePU 3

SkePU 3 consists of four parts:

  1. A sequential interface and accompanying implementation for C++ skeleton programming.
  2. A source-to-source precompiler tool built on top of the Clang C-language compiler front-end, transforming code written for the sequential interface for parallel and heterogeneous execution.
  3. Minor patches to Clang to support said tool.
  4. A collection of parallel and/or heterogeneous back-ends targeting various architectures and systems.

Setting up the SkePU source-to-source compiler

Cloning with submodules

This repository should be cloned with git clone --recursive $URL in order to also clone the submodules it links to. git submodule update --init can be used to clone submodules to an existing repository.

Building - Automatically

To compile SkePU-tool, run the foolowing commands in the project root:

$ mkdir build && cd build

$ cmake -DCMAKE_BUILD_TYPE=Release ..

$ make

To install SkePU into , run the following command from <project_root>/build:

$ make DESTDIR=<path> install

If cmake does not generate Makefiles, use the option -G "Unix Makefiles". For more information about build options, run ´cmake -LAH` in the build directory. For information about how to configure cmake with compilers, linkers, flags, and other such options, please refer to the cmake manuals at the cmake homepage.

Compatibility with SkePU 1 and 2

SkePU v3 is not compatible with version 2 nor with version 1. Check the user guide for more information.

SkePU 1 code is not compatible with SkePU 2 and vice-versa. SkePU 2 is in large part based on concepts from SkePU 1, and the data structures are the same, so it should be fairly straightworward to port a SkePU 1 project to SkePU 2. It may require some effort to fit the SkePU 2 precompiler into a large project with non-trivial build system, however.

Directory layout

skepu-headers/src/

As SkePU 3 is a header library, this directory contains headers and source files for the SkePU runtime. Herafter refered to as .

<skepu-headers>/skepu3

Contains the serial skeleton interface (headers with inline implementations), along with headers for SkePU containers.

<skepu-headers>/skepu3/impl

Helpers.

<skepu-headers>/skepu3/backend

Contains header files for the SkePU skeleton backends.

<skepu-headers>/skepu3/backend/impl

Contains implementations of the various SkePU skeleton backends and containers.

<skepu-headers>skepu3/cluster

Containes the implementation of the StarPU MPI backend.

examples

Contains SkePU 3 example programs. Note that the Makefile requires skepu-tool to have been built in /build to find skepu-tool.

llvm

Sources for the source-to-source Clang tool. This directory is part of the LLVM directory tree, and a symlink named <path_to_llvm>/llvm/tools/clang/tools/skepu should link here.

About

SkePU open source distribution

License:Other


Languages

Language:C++ 88.6%Language:CMake 11.4%Language:C 0.0%