ganler / ResearchReading

General system research material (not limited to paper) reading notes.
GNU General Public License v3.0
20 stars 1 forks source link

PLDI'2009 | Petabricks: A Language and Compiler for Algorithmic Choice #62

Closed ganler closed 3 years ago

ganler commented 3 years ago

Paper: https://groups.csail.mit.edu/commit/papers/2009/ansel-pldi09.pdf Slides:

ganler commented 3 years ago

Paper Summary

General solutions are usually not optimal for a specific domain. Taking sorting, for example, the performance of the different algorithms is always related to data distribution, vector length, etc. Since existing compilers are optimizing codes for general performance, Petabrick is motivated to be a compiler optimized for specialized performance by tuning the best configuration for a specific scenario. To tackle this challenge, Petabrick first needs to model the search space of algorithmic choices. It then requires users to specify the accuracy of the algorithm for even better performance given the desired speed-accuracy tradeoff. Petabrick is also a parallel compiler that generates codes that can be executed in parallel using its multi-thread scheduler. Petabrick is also a language extending standard C++. It leverages the concept of transform to identify the input and output data layout, and the term rules to model the search space and strategies. Petabricks then compiles the codes into C++ and use its runtime library to schedule the execution and choices (but the tuning happens at compilation time). During tuning, it follows the dependency graph of algorithmic choices to tune everything from bottom to up. The threading scheduler is also implemented with a work-stealing mechanism to adapt dynamic workloads.

Strength

Weakness

How to extend


Valuable discussion from course