About

PetaBricks is a new implicitly parallel language and compiler where
having multiple implementations of multiple algorithms to solve a
problem is the natural way of programming. We make algorithmic choice
a fundamental construct of the language. Choices are provided in a
way that also allows our compiler to tune at a finer granularity. The
PetaBricks compiler autotunes programs by making both fine-grained
as well as algorithmic choices. Choices also include different
automatic parallelization techniques, data distributions, algorithmic
parameters, transformations, and blocking.

In addition, we introduce novel techniques to autotune algorithms
for different convergence criteria. When choosing between various
direct and iterative methods, the PetaBricks compiler is able to tune
a program in such a way that delivers near-optimal efficiency for
any desired level of accuracy. The compiler has the flexibility of
utilizing different convergence criteria for the various components
within a single algorithm, providing the user with accuracy choice
alongside algorithmic choice.