PALLAS stands for Parallel Applications, Libraries, Languages, Algorithms, and Systems. We believe that productive development of applications for an emerging generation of highly parallel micro processors is the preeminent programming challenge of our time. Consequently, our goal is to enable the productive development of efficient parallel applications by domain experts, not just parallel programming experts. We believe that the key to the design of parallel programs is software architecture, and the key to their efficient implementation is frameworks. In our approach, the basis of both is design patterns and a pattern language. Borrowed from civil architecture, the term design pattern means solutions to recurring design problems that domain experts learn. A pattern language is simply an organized way of navigating through a collection of design patterns to produce a design. The computational elements of Our Pattern Language (see are built up from a series of computational patterns drawn largely from thirteen motifs . We see these as the fundamental software building blocks that are then composed using the structural patterns of Our Pattern Language drawn from common software architectural styles , such as pipe‐and‐filter. A software architecture is then the hierarchical composition of computational and structural patterns, which we subsequently refine using lower‐level design patterns.

To test and demonstrate our approach to parallel software development we have applied a pattern-oriented approach to parallel software development to a broad range of applications in computer vision, speech recognition, quantitative finance, games, and natural language translation. We have first used patterns and Our Pattern Language as conceptual tools to aid in the design and implementation of the applications.

Our current publications are listed at:
More information about our research, see our wiki at: