The advent of multi-core processors changes the way programs have to be written. To utilize all cores, problems must be restated in terms of (preferably) independent work units which can be handled in parallel. Results from individual computations are collected to form the final answer. In an ideal setting, with completely independent work units, we can expect a perfect speed-up, i.e., with N available cores, a problem is solved N times faster than on a single-core processor. However, in practice, this is often not the case, due to hidden artifacts like contention on global resources (e.g., memory allocation), Convoying, False Sharing, cache ping-pong, etc.. These problems manifest themselves in particular in thread-based (shared-memory) programs.
The aim of this project is to ease the development of stream-based algorithms for multi-core processors. Ideally, they could be expressed in a functional style which allows reasoning about correctness and also test-driven development of each sub-expression. Thus it seem adequate to develop a domain specific language (DSL) for expressing parallel computations on streams.
Keywords:
The Series articles contain a wealth of related work.