Generators-of-Generators Library with Optimization Capabilities in Fortress

A large number of studies have been conducted on parallel skeletons and optimization theorems over skeleton programs to resolve difficulties with parallel programming. However, two nontrivial tasks still remain unresolved when we need nested data structures: The first is composing skeletons to generate and consume them; and the second is applying optimization theorems to obtain efficient parallel programs. In this paper, we propose a novel library called Generators of Generators (GoG) library. It provides a set of primitives, GoGs, to produce nested data structures. A program developed with these GoGs is automatically optimized by the optimization mechanism in the library, so that its asymptotic complexity can be improved. We demonstrate its implementation on the Fortress language and report some experimental results.

[1]  Guy E. Blelloch,et al.  Compiling Collection-Oriented Languages onto Massively Parallel Computers , 1990, J. Parallel Distributed Comput..

[2]  Anthony Skjellum,et al.  Using MPI - portable parallel programming with the message-parsing interface , 1994 .

[3]  Michael F. P. O'Boyle,et al.  Compiler Reduction of Invalidation Traffic in Virtual Shared Memory Systems , 1996, Euro-Par, Vol. I.

[4]  Sergei Gorlatch,et al.  Systematic Efficient Parallelization of Scan and Other List Homomorphisms , 1996, Euro-Par, Vol. II.

[5]  Anthony Skjellum,et al.  Portable Parallel Programming with the Message-Passing Interface , 1996 .

[6]  Masato Takeichi,et al.  Diffusion: Calculating Efficient Parallel Programs , 1999, PEPM.

[7]  Rizos Sakellariou,et al.  Euro-Par 2001 Parallel Processing , 2001, Lecture Notes in Computer Science.

[8]  S. Gorlatch,et al.  TOWARDS PARALLEL PROGRAMMING BY TRANSFORMATION: THE FAN SKELETON FRAMEWORK , 2001, Parallel Algorithms Appl..

[9]  Manuel M. T. Chakravarty,et al.  Nepal - Nested Data Parallelism in Haskell , 2001, Euro-Par.

[10]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[11]  Sergei Gorlatch,et al.  Patterns and Skeletons for Parallel and Distributed Computing , 2002, Springer London.

[12]  Alexander Schrijver,et al.  Combinatorial optimization. Polyhedra and efficiency. , 2003 .

[13]  Zhenjiang Hu,et al.  A New Parallel Skeleton for General Accumulative Computations , 2004, International Journal of Parallel Programming.

[14]  Manuel M. T. Chakravarty,et al.  Higher Order Flattening , 2006, International Conference on Computational Science.

[15]  Stephen Gilmore,et al.  Combining Measurement and Stochastic Modelling to Enhance Scheduling Decisions for a Parallel Mean Value Analysis Algorithm , 2006, International Conference on Computational Science.

[16]  Victor Luchangco,et al.  The Fortress Language Specification Version 1.0 , 2007 .

[17]  Masato Takeichi,et al.  A Compositional Framework for Developing Parallel Programs on Two-Dimensional Arrays , 2007, International Journal of Parallel Programming.

[18]  John H. Reppy,et al.  Manticore: a heterogeneous parallel language , 2007, DAMP '07.

[19]  Barbara Chapman,et al.  Using OpenMP: Portable Shared Memory Parallel Programming (Scientific and Engineering Computation) , 2007 .

[20]  Simon L. Peyton Jones,et al.  Data parallel Haskell: a status report , 2007, DAMP '07.

[21]  Barbara Chapman,et al.  Using OpenMP - portable shared memory parallel programming , 2007, Scientific and engineering computation.

[22]  Kiminori Matsuzaki,et al.  Implementing Fusion-Equipped Parallel Skeletons by Expression Templates , 2009, IFL.

[23]  江本 健斗,et al.  Homomorphism-based structured parallel programming , 2009 .