Abstract
OpenMP is widely used in practice to create parallel software, however, software quality assurance tool support is still immature. OpenMPspy introduces a new approach, with a short-term and a long-term perspective, to aid software engineers write better parallel programs in OpenMP. On the one hand, OpenMPspy acts like an online-debugger that statically detects problems with incorrect construct usage and which reports problems while programmers are typing code in Eclipse. We detect simple slips as well as more complex anti-patterns that can lead to correctness problems and performance problems. In addition, OpenMPspy can aggregate statistics about OpenMP language usage and bug patterns from many projects. Insights generated from such data help OpenMP language designers improve the usability of constructs and reduce error potential, thus enhancing parallel software quality in the long run. Using OpenMPspy, this paper presents one of the first detailed empirical studies of over 40 programs with more than 4 million lines of code, which shows how OpenMP constructs are actually used in practice. Our results reveal that constructs believed to be frequently used are actually rarely used. Our insights give OpenMP language and compiler designers a clearer picture on where to focus the efforts for future improvements.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Code Analysis Framework for Eclipse CDT (CODAN) (2010), http://wiki.eclipse.org/CDT/designs/StaticAnalysis
Evaluation and Usability of Programming Languages and Tools (PLATEAU) Workshops (2010), http://ecs.victoria.ac.nz/Events/PLATEAU
The OpenMP API specification for parallel programming (2011), http://www.openmp.org
Chapman, B., Jost, G., van der Pas, R.: Using OpenMP. Portable Shared Memory Parallel Programming. The MIT Press, Cambridge (2007)
Flanagan, C., Freund, S.N.: Fasttrack: efficient and precise dynamic race detection. In: Proc. PLDI 2009, pp. 121–133. ACM, New York (2009)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design patterns: elements of reusable object-oriented software, vol. 206. Addison-Wesley, Reading (1995)
Helmbold, D.P., McDowell, C.E.: A taxonomy of race detection algorithms. Technical report, UC Santa Cruz, Santa Cruz, CA, USA, September 28 (1994)
Intel. Intel parallel lint. (2010), http://software.intel.com
Lu, S., et al.: Learning from mistakes: a comprehensive study on real world concurrency bug characteristics. In: Proc. ASPLOS XIII (2008)
Nistor, A., et al.: Light64: Lightweight hardware support for data race detection during systematic testing of parallel programs. In: MICRO 2009 (2009)
Pozniansky, E., Schuster, A.: Multirace: efficient on-the-fly data race detection in multithreaded C++ programs. Concurr. Comput.: Pract. Exper. 19(3) (2007)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Pankratius, V., Knittel, F., Masing, L., Walser, M. (2011). OpenMPspy: Leveraging Quality Assurance for Parallel Software. In: Jeannot, E., Namyst, R., Roman, J. (eds) Euro-Par 2011 Parallel Processing. Euro-Par 2011. Lecture Notes in Computer Science, vol 6853. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-23397-5_13
Download citation
DOI: https://doi.org/10.1007/978-3-642-23397-5_13
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-23396-8
Online ISBN: 978-3-642-23397-5
eBook Packages: Computer ScienceComputer Science (R0)