The most widely used parallel languages require users to worry about mundane details. High performance programs written in these languages unnecessarily require both algorithmic and architecture expertise interposed in the same program text. This lack of separation overly complicates programs. Furthermore, the programmers have to explicitly, or implicitly, choose a data and computation distribution. This reduces the compatibility, malleability, portability, and maintainability of the optimized programs. This research addresses how programmers can express parallelism in computation by directly allowing experts to create reusable software constructs or "bricks."
The research explores the PetaBricks compositional language, in which automatic parallelism extraction and locality recognition will become tractable. The major task is the building of the compiler to map the algorithmic parallelism and locality to near optimal utilization of the resources.
The language will be composed of base cases and compositions. They can be composed recursively to solve large problems. The ordering and granularity of these compositions will be managed by the compiler and runtime framework to allow programs to adapt. The research introduces Patlo: a pattern transformation language for optimization where domain experts can program patterns and corresponding transformations for algorithm-specific and architecture-specific optimizations.