Pochoir

The Pochoir stencil compiler. Pochoir (pronounced ”PO-shwar”) is a compiler and run-time system for implementing stencil computations on multicore processors. A stencil defines the value of a grid point in a d-dimensional spatial grid at time t as a function of neighboring grid points at recent times before t. A stencil computation computes the stencil for each grid point over many time steps. In Pochoir, user typically just need to specify his /or her stencil computing kernel and boundary conditions in an embedded domain specific language in C++. Depending on the purpose of checking functional correctness or performance, user can employ either a native C++ compiler or Pochoir compiler to compile and run his /or her code. If the user employs the Pochoir compiler, the basic parallelization and optimization strategy of Pochoir is divide-and-conquer (cache-oblivious algorithm). In higher dimensional space-time grid, Pochoir employs a novel cutting strategy of Hyper-Space cut. Pochoir is an open source software project hosted by SuperTech group at CSAIL, MIT. You are invited to contribute in many forms (documentation, translation, writing code, fixing bugs, porting to other platforms...). The Pochoir package contains three (3) main components: an embedded domain specific language (EDSL) in native C++ for stencil, a C++ template run-time library, and a domain specific compiler to optimize the performance at compile-time. The Pochoir EDSL is native C++, the library is C++ template library, and the DSL compiler is written in Haskell. Currently, the Pochoir package is only tested on Linux system.


References in zbMATH (referenced in 10 articles )

Showing results 1 to 10 of 10.
Sorted by year (citations)

  1. Grégoire, Thomas; Chlipala, Adam: Mostly automated formal verification of loop dependencies with applications to distributed stencil algorithms (2019)
  2. Bender, Michael A.; Chowdhury, Rezaul A.; Ganapathi, Pramod; McCauley, Samuel; Tang, Yuan: The range 1 query (R1Q) problem (2018)
  3. Hückelheim, J. C.; Hovland, P. D.; Strout, M. M.; Müller, J.-D.: Parallelizable adjoint stencil computations using transposed forward-mode algorithmic differentiation (2018)
  4. Grégoire, Thomas; Chlipala, Adam: Mostly automated formal verification of loop dependencies with applications to distributed stencil algorithms (2016)
  5. Ghysels, Pieter; Vanroose, Wim: Modeling the performance of geometric multigrid stencils on multicore computer architectures (2015)
  6. Malas, T.; Hager, G.; Ltaief, H.; Stengel, H.; Wellein, G.; Keyes, D.: Multicore-optimized wavefront diamond blocking for optimizing stencil updates (2015)
  7. Mo, Tieqiang; Li, Renfa: A new memory mapping mechanism for GPGPUs’ stencil computation (2015)
  8. Popinet, Stéphane: A quadtree-adaptive multigrid solver for the Serre-Green-Naghdi equations (2015)
  9. Ballard, G.; Carson, E.; Demmel, J.; Hoemmen, M.; Knight, N.; Schwartz, O.: Communication lower bounds and optimal algorithms for numerical linear algebra (2014)
  10. Ajwani, Deepak; Sitchinava, Nodari: Empirical evaluation of the parallel distribution sweeping framework on multicore architectures (2013)