CnC: A Dependence Programming Model

Application tuning is the one of the major hurdles on the road to exascale computing. Tuning is often directed at a specific architecture or towards some specific tuning goal. As currently practiced, the tuning activity requires serious expertise in the application domain, target architecture and tuning goals. Keeping all these (sometimes conflicting) concerns in mind at the same time while developing a program is very difficult and error prone. Dependence programming is a class of dataflow programming in which both data and control flow are explicit, are distinguished and are given equal weight. This paper gives an overview of CnC, a dataflow dependence programming model, from the perspective of the needs of exascale computing and shows how CnC addresses those needs through a separation of concerns. The goal of CnC is to enable a process that is easier, less error-prone and more effective, by separating these concerns into independent activities. Rather than proposing yet another approach to tuning, CnC provides a way to specify the application in a way that a) hides details not relevant to tuning, b) includes as much detail as possible to support the analysis and tuning process, and c) does not assume any specific architecture, style of tuning or tuning goals. This results in a specification of the application that can be applied to any existing or future architectures and can use any existing or future tuning approach. At the same time it can be more efficient in human time spent on creating the application and more effective in finding the best tuning.

[1]  Matteo Frigo,et al.  The implementation of the Cilk-5 multithreaded language , 1998, PLDI.

[2]  Kathleen Knobe,et al.  Compiler Optimization of an Application-specific Runtime , 2013 .

[3]  Jens Palsberg,et al.  Concurrent Collections , 2010, Sci. Program..

[4]  Jack B. Dennis,et al.  First version of a data flow procedure language , 1974, Symposium on Programming.

[5]  Vivek Sarkar,et al.  Bounded memory scheduling of dynamic task graphs , 2014, 2014 23rd International Conference on Parallel Architecture and Compilation (PACT).

[6]  Vivek Sarkar,et al.  PIPES: A Language and Compiler for Task-Based Programming on Distributed-Memory Clusters , 2016, SC16: International Conference for High Performance Computing, Networking, Storage and Analysis.

[7]  Jason Cong,et al.  Mapping a data-flow programming model onto heterogeneous platforms , 2012, LCTES '12.

[8]  Vivek Sarkar,et al.  Declarative Tuning for Locality in Parallel Programs , 2016, 2016 45th International Conference on Parallel Processing (ICPP).

[9]  Michael G. Burke,et al.  The Tuning Language for Concurrent Collections , 2011 .

[10]  Yi Guo,et al.  The habanero multicore software research project , 2009, OOPSLA Companion.

[11]  Vivek Sarkar,et al.  Folding of Tagged Single Assignment Values for Memory-Efficient Parallelism , 2012, Euro-Par.

[12]  Vivek Sarkar,et al.  Integrating Asynchronous Task Parallelism with MPI , 2013, 2013 IEEE 27th International Symposium on Parallel and Distributed Processing.

[13]  Laxmikant V. Kalé,et al.  CHARM++: a portable concurrent object oriented system based on C++ , 1993, OOPSLA '93.

[14]  Vivek Sarkar,et al.  Characterizing Application Execution using the Open Community Runtime , 2015 .

[15]  Vivek Sarkar,et al.  DFGR an Intermediate Graph Representation for Macro-Dataflow Programs , 2014, 2014 Fourth Workshop on Data-Flow Execution Models for Extreme Scale Computing.

[16]  Richard W. Vuduc,et al.  Performance evaluation of concurrent collections on high-performance multicore computing systems , 2010, 2010 IEEE International Symposium on Parallel & Distributed Processing (IPDPS).

[17]  Alexander Aiken,et al.  Legion: Expressing locality and independence with logical regions , 2012, 2012 International Conference for High Performance Computing, Networking, Storage and Analysis.

[18]  Nick Vrvilo Implementing Asynchronous Checkpoint/Restart for the Concurrent Collections Model , 2014 .

[19]  Vivek Sarkar,et al.  Polyhedral Optimizations for a Data-Flow Graph Language , 2015, LCPC.

[20]  Jason Cong,et al.  Mapping a data-flow programming model onto heterogeneous platforms , 2012, LCTES 2012.