The lazy programmer's approach to building a parallel image processing library

In this paper we show how an extensive library of data parallel low level image processing operations is created with minimal effort. We discuss how many commonly used image processing operations are implemented in parallel by concatenation of communication routines, basic memory operations, and so-called ”parallelizable patterns”. A parallelizable pattern constitutes the maximum amount of work in a sequential image processing operation that can be applied in a parallel operation as well - without having to communicate to obtain non-local data. Apart from being relatively simple to implement, a parallel library built in this manner is extensible and easily maintainable, as code redundancy is avoided as much as possible.