PSkel

A high-performance framework for stencil computations.

Introduction

PSkel is an application programming interface (API) that leverages the extensibility of C++ to provide common stencil functionality. Using parallel skeletons, PSkel releases the programmer from the responsibility of writing boiler-plate code for stencil programming (e.g., explicit synchronization and data exchanges between GPU memory and main memory). Furthermore, the framework translates the abstractions described using its API into lowlevel C++ code compatible with Intel TBB, OpenMP and NVIDIA CUDA. PSkel's API is a C++ template library that implements a stencil parallel skeleton and provides useful constructs for developing parallel stencil applications. The API provides templates for manipulating input and output data; specifying stencil masks; encapsulating memory management, computations, and runtime details.

Publications

Scientific journals

TOAST: Automatic tiling for iterative stencil computations on GPUs
Rodrigo C. O. Rocha, Alyson Pereira, Luiz Ramos, Luís F. W. Góes
Concurrency and Computation: Practice and Experience, 2016

PSkel: A Stencil programming framework for CPU-GPU systems [bibtex] [doi]
Alyson D. Pereira, Luiz Ramos, Luís F. W. Góes
Concurrency and Computation: Practice and Experience, 2015

Conferences and symposiums

PSkel-MPPA: Uma adaptação do framework PSkel para o processador manycore MPPA-256 [pdf] [bibtex]
Emmanuel Podestá, Alyson Pereira, Pedro Penna, Rodrigo C. O. Rocha, Márcio Castro, Luís F. W. Góes
ERAD/RS 2016 - Escola Regional de Alto Desempenho do Estado do Rio Grande do Sul

StencilBench: Um benchmark sintético para avaliação de frameworks do padrão estêncil [pdf] [bibtex]
Alyson D. Pereira, Sérgio V. Silva, Rodrigo C. O. Rocha, Márcio B. Castro, Luís F. W. Góes
XVI Simpósio em Sistemas Computacionais - Workshop de Iniciação Científica, WSCAD-WIC 2015

PSkel: Um framework do padrão de programação Stencil para GPUs [bibtex]
Alyson D. Pereira, Luís F. W. Góes
XIV Simpósio em Sistemas Computacionais - Workshop de Iniciação Científica, WSCAD-WIC 2013

Requirements

Dependencies

  • NVIDIA CUDA: PSkel has not been tested with any NVIDIA CUDA version under 5.5.
  • OpenMP: OpenMP is used throughout PSkel for efficiency.
  • Intel TBB: PSkel can use either OpenMP or TBB for multi-threading the skeletons computations.
  • GAlib: GAlib is used to solve optimization problems required for some autotuning mechanisms.
  • Google Test: Google testing framework is used for unit-testing PSkel.

Documentation

Reporting issues

To report bugs, request features, or suggest enhancements, please file an issue directly using GitHub.

Credits

Developers

Acknowledgements

License