Pattern programming approach for teaching parallel and distributed computing

In this paper, we describe an approach for teaching parallel and distributed computing at the undergraduate level using computational patterns. The goal is to promote higher-level structured design for parallel programming and make parallel programming easier and more scalable. A pattern programming framework has been developed to create a distributed application that avoids the need to write code in low level message--passing APIs such as MPI. Several patterns have been implemented including workpool, pipeline, synchronous and iterative all-to-all, and stencil. We have redesigned a regular senior undergraduate parallel programming course to begin with a pattern strategy using our framework and provide a detailed syllabus around patterns.

[1]  De Giusti,et al.  Structured Parallel Programming: patterns for efficient computation , 2015 .

[2]  Landon P. Cox,et al.  Design patterns: an essential component of CS curricula , 1998, SIGCSE '98.

[3]  Timothy G. Mattson,et al.  Patterns for parallel programming , 2004 .

[4]  Barry Wilkinson,et al.  Running parallel applications on a heterogeneous environment with accessible development practices and automatic scalability , 2011 .

[5]  Cyril S. Ku,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[6]  Kurt Keutzer,et al.  A design pattern language for engineering (parallel) software: merging the PLPP and OPL projects , 2010, ParaPLoP '10.

[7]  K. Keutzer,et al.  Our Pattern Language ( OPL ) : A Design Pattern Language for Engineering ( Parallel ) Software , 2009 .

[8]  Clayton S. Ferner Revisiting communication code generation algorithms for message-passing systems , 2006, Int. J. Parallel Emergent Distributed Syst..

[9]  Christopher G. Lasater,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[10]  Barry Wilkinson,et al.  Towards a top-down approach to teaching an undergraduate grid computing course , 2008, SIGCSE '08.

[11]  James O. Coplien,et al.  Software design patterns , 2003 .

[12]  Stephen Toub PATTERNS OF PARALLEL PROGRAMMING UNDERSTANDING AND APPLYING PARALLEL PATTERNS WITH THE .NET FRAMEWORK 4 AND C , 2009 .

[13]  Clayton Ferner The Paraguin compiler - message-passing code generation using SUIF [Stanford University Intermediate Format] , 2002, Proceedings IEEE SoutheastCon 2002 (Cat. No.02CH37283).