Automatic Exploration of Potential Parallelism in Sequential Applications
The multicore era has increased the need for highly parallel software. Since automatic parallelization turned out ineffective for many production codes, the community hopes for the development of tools that may assist parallelization, providing hints to drive the parallelization process. In our previous work, we had designed Tareador, a tool based on dynamic instrumentation that identifies potential task-based parallelism inherent in applications. Also, we showed how a programmer can use Tareador to explore the potential of different parallelization strategies. In this paper, we build up on our previous work by automating the process of exploring parallelism. We have designed an environment that, given a sequential code and configuration of the target parallel architecture, iteratively runs Tareador to find an efficient parallelization strategy. We propose an autonomous algorithm based on simple metrics and a cost function. The algorithm finds an efficient parallelization strategy and provides the programmer with sufficient information to turn that parallelization strategy into an actual parallel program.
Keywordsautomatic parallelization potential parallelism OmpSs
Unable to display preview. Download preview PDF.
- 1.Benkner, S.: Vfc: The vienna fortran compiler. Scientific Programming 7(1), 67–81 (1999)Google Scholar
- 2.Bik, A., Girkar, M., Grey, P., Tian, X.: Efficient exploitation of parallelism on pentium iii and pentium 4 processor-based systems (2001)Google Scholar
- 3.Critical Blue. Prism, http://www.criticalblue.com/ (active on June 27, 2013)
- 5.Intel Corporation. Intel Parallel Advisor, http://software.intel.com/en-us/intel-advisor-xe (active on June 27, 2013)
- 7.Vector Fabrics. Pareon, http://www.vectorfabrics.com/products (active on June 27, 2013)
- 8.Garcia, S., Jeon, D., Louie, C.M., Taylor, M.B.: Kremlin: rethinking and rebooting gprof for the multicore age. In: PLDI, pp. 458–469 (2011)Google Scholar
- 10.Lattner, C., Adve, V.: LLVM: A compilation framework for lifelong program analysis and transformation, San Jose, CA, USA, pp. 75–88 (March 2004)Google Scholar
- 12.Nethercote, N., Seward, J.: Valgrind, http://valgrind.org/ (active on June 27, 2013)
- 13.Pheatt, C.: Intel threading building blocks. J. Comput. Sci. Coll. 23(4), 298–298 (2008)Google Scholar
- 14.Pillet, V., Labarta, J., Cortes, T., Girona, S.: PARAVER: A Tool to Visualize and Analyze Parallel Code. In: WoTUG-18 (1995)Google Scholar
- 16.Wilson, R.P., French, R.S., Wilson, C.S., Amarasinghe, S.P., Anderson, J.-A.M., Tjiang, S.W.K., Liao, S.-W., Tseng, C.-W., Hall, M.W., Lam, M.S., Hennessy, J.L.: Suif: An infrastructure for research on parallelizing and optimizing compilers. SIGPLAN Notices 29(12), 31–37 (1994)CrossRefGoogle Scholar
- 17.Zhang, X., Navabi, A., Jagannathan, S.: Alchemist: A transparent dependence distance profiling infrastructure. In: CGO 2009 (2009)Google Scholar