Surrounding Theorem: Developing Parallel Programs for Matrix-Convolutions
Computations on two-dimensional arrays such as matrices and images are one of the most fundamental and ubiquitous things in computational science and its vast application areas, but development of efficient parallel programs on two-dimensional arrays is known to be hard. To solve this problem, we have proposed a skeletal framework on two-dimensional arrays based on the theory of constructive algorithmics. It supports users, even with little knowledge about parallel machines, to develop systematically both correct and efficient parallel programs on two-dimensional arrays. In this paper, we apply our framework to the matrix-convolutions often used in image filters and difference methods. We show the efficacy of the framework by giving a general parallel program for the matrix-convolutions described with the skeletons, and a theorem that optimizes the general program into an application-specific one.
KeywordsBinary Operator Parallel Program General Program Constructive Algorithmics Parallel Complexity
Unable to display preview. Download preview PDF.
- 2.Bird, R.S.: Lectures on Constructive Functional Programming. Technical Report Technical Monograph PRG-69, Oxford University Computing Laboratory (1988)Google Scholar
- 3.Bird, R.S.: Introduction to Functional Programming using Haskell. Prentice-Hall, Englewood Cliffs (1998)Google Scholar
- 4.Bird, R.S., de Moor, O.: Algebras of Programming. Prentice-Hall, Englewood Cliffs (1996)Google Scholar
- 8.Emoto, K.: A Compositional Framework for Parallel Programming on Two-Dimensional Arrays. Master’s thesis, Graduate School of Information Science and Technology, the University of Tokyo (2006), available at http://www.ipl.t.u-tokyo.ac.jp/~emoto/master_thesis.pdf
- 9.Emoto, K., Hu, Z., Kakehi, K., Takeichi, M.: A Compositional Framework for Developing Parallel Programs on Two Dimensional Arrays. Technical Report METR2005-09, Department of Mathematical Informatics, University of Tokyo (2005)Google Scholar
- 10.Frens, J.D., Wise, D.S.: QR Factorization with Morton-Ordered Quadtree Matrices for Memory Re-use and Parallelism. In: Proceedings of 4th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP 2003), pp. 144–154 (2003)Google Scholar
- 11.Hains, G.: Programming with Array Structures. In: Kent, A., Williams, J.G. (eds.) Encyclopedia of Computer Science and Technology, vol. 14, pp. 105–119. M. Dekker Inc., New York (1994), appears also in Encyclopedia of MicrocomputersGoogle Scholar
- 14.Matsuzaki, K., Emoto, K., Iwasaki, H., Hu, Z.: A library of constructive skeletons for sequential style of parallel programming (invited paper). In: Proceedings of the First International Conference on Scalable Information Systems (INFOSCALE 2006), IEEE Press, Los Alamitos (to appear, 2006)Google Scholar
- 16.Rabhi, F.A., Gorlatch, S. (eds.): Patterns and Skeletons for Parallel and Distributed Computing. Springer, Heidelberg (2002)Google Scholar