Surrounding Theorem: Developing Parallel Programs for Matrix-Convolutions

  • Kento Emoto
  • Kiminori Matsuzaki
  • Zhenjiang Hu
  • Masato Takeichi
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4128)


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.


Binary Operator Parallel Program General Program Constructive Algorithmics Parallel Complexity 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Benoit, A., Cole, M., Hillston, J., Gilmore, S.: Flexible skeletal programming with eskel. In: Cunha, J.C., Medeiros, P.D. (eds.) Euro-Par 2005. LNCS, vol. 3648, pp. 761–770. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  2. 2.
    Bird, R.S.: Lectures on Constructive Functional Programming. Technical Report Technical Monograph PRG-69, Oxford University Computing Laboratory (1988)Google Scholar
  3. 3.
    Bird, R.S.: Introduction to Functional Programming using Haskell. Prentice-Hall, Englewood Cliffs (1998)Google Scholar
  4. 4.
    Bird, R.S., de Moor, O.: Algebras of Programming. Prentice-Hall, Englewood Cliffs (1996)Google Scholar
  5. 5.
    Cole, M.: Algorithmic Skeletons: Structured Management of Parallel Computation. Research Monographs in Parallel and Distributed Computing. Pitman, London (1989)zbMATHGoogle Scholar
  6. 6.
    Danelutto, M., Pasqualetti, F., Pelagatti, S.: Skeletons for data parallelism in P3L. In: Lengauer, C., Griebl, M., Gorlatch, S. (eds.) Euro-Par 1997. LNCS, vol. 1300, pp. 619–628. Springer, Heidelberg (1997)CrossRefGoogle Scholar
  7. 7.
    Elmroth, E., Gustavson, F., Jonsson, I., Kagstroom, B.: Recursive Blocked Algorithms and Hybrid Data Structures for Dense Matrix Library Software. SIAM Review 46(1), 3–45 (2004)zbMATHCrossRefMathSciNetGoogle Scholar
  8. 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
  9. 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. 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. 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
  12. 12.
    Jain, A.K.: Fundamentals of Digital Image Processing. Prentice-Hall, Englewood Cliffs (1989)zbMATHGoogle Scholar
  13. 13.
    Kuchen, H.: A Skeleton Library. In: Monien, B., Feldmann, R.L. (eds.) Euro-Par 2002. LNCS, vol. 2400, pp. 620–629. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  14. 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
  15. 15.
    Mullin, L. (ed.): Arrays, Functional Languages, and Parallel Systems. Kluwer Academic Publishers, Dordrecht (1991)zbMATHGoogle Scholar
  16. 16.
    Rabhi, F.A., Gorlatch, S. (eds.): Patterns and Skeletons for Parallel and Distributed Computing. Springer, Heidelberg (2002)Google Scholar
  17. 17.
    Serot, J., Ginhac, D.: Skeletons for Parallel Image Processing: an Overview of the SKIPPER Project. Parallel Computing 28(12), 1685–1708 (2002)zbMATHCrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Kento Emoto
    • 1
  • Kiminori Matsuzaki
    • 1
  • Zhenjiang Hu
    • 1
  • Masato Takeichi
    • 1
  1. 1.Department of Mathematical InformaticsUniversity of Tokyo 

Personalised recommendations