Performance challenges in modular parallel programs

Over the past decade, many programming languages and systems for parallel-computing have been developed, including Cilk, Fork/Join Java, Habanero Java, Parallel Haskell, Parallel ML, and X10. Although these systems raise the level of abstraction at which parallel code are written, performance continues to require the programmer to perform extensive optimizations and tuning, often by taking various architectural details into account. One such key optimization is granularity control, which requires the programmer to determine when and how parallel tasks should be sequentialized. In this paper, we briefly describe some of the challenges associated with automatic granularity control when trying to achieve portable performance for parallel programs with arbitrary nesting of parallel constructs. We consider a result from the functional-programming community, whose starting point is to consider an "oracle" that can predict the work of parallel codes, and thereby control granularity. We discuss the challenges in implementing such an oracle and proving that it has the desired theoretical properties under the nested-parallel programming model.

[1]  Kenjiro Taura,et al.  A static cut-off for task parallel programs , 2016, 2016 International Conference on Parallel Architecture and Compilation Techniques (PACT).

[2]  Alexandros Tzannes,et al.  Lazy Scheduling: A Runtime Adaptive Scheduler for Declarative Parallelism , 2014, TOPL.

[3]  Alejandro Duran,et al.  An adaptive cut-off for task parallelism , 2008, 2008 SC - International Conference for High Performance Computing, Networking, Storage and Analysis.

[4]  J. S. Weening Parallel execution of LISP programs , 1990 .

[5]  Joseph S. Weening,et al.  Low-Cost Process Creation and Dynamic Partitioning in Qlisp , 1989, Workshop on Parallel Lisp.

[6]  Arthur Charguéraud,et al.  Oracle-guided scheduling for controlling granularity in implicitly parallel languages* , 2016, Journal of Functional Programming.

[7]  Kenjiro Taura,et al.  Autotuning of a Cut-Off for Task Parallel Programs , 2016, 2016 IEEE 10th International Symposium on Embedded Multicore/Many-core Systems-on-Chip (MCSOC).

[8]  Robert H. Halstead,et al.  Lazy task creation: a technique for increasing the granularity of parallel programs , 1990, LISP and Functional Programming.

[9]  James Reinders,et al.  Intel® threading building blocks , 2008 .