ABSTRACT
Parallel programming is hard. The industry leaders hope to convert the hard problem of using parallelism into the easier problem of using a parallel library. Yet, we know little about how programmers adopt these libraries in practice. Without such knowledge, other programmers cannot educate themselves about the state of the practice, library designers are unaware of API misusage, researchers make wrong assumptions, and tool vendors do not support common usage of library constructs.
We present the first study that analyzes the usage of parallel libraries in a large scale experiment. We analyzed 655 open-source applications that adopted Microsoft's new parallel libraries -- Task Parallel Library (TPL) and Parallel Language Integrated Query (PLINQ) -- comprising 17.6M lines of code written in C#. These applications are developed by 1609 programmers. Using this data, we answer 8 research question and we uncover some interesting facts. For example, (i) for two of the fundamental parallel constructs, in at least 10% of the cases developers misuse them so that the code runs sequentially instead of concurrently, (ii) developers make their parallel code unnecessarily complex, (iii) applications of different size have different adoption trends. The library designers confirmed that our finding are useful and will influence the future development of the libraries.
- O. Callaú, R. Robbes, É. Tanter, and D. Röthlisberger. How developers use the dynamic features of programming languages: the case of smalltalk. In MSR '11: Proceedings of the 8th Working Conference on Mining Software Repositories, pages 23--32, 2011. Google ScholarDigital Library
- C. Campbell, R. Johnson, A. Miller, and S. Toub. Parallel Programming with Microsoft .NET: Design Patterns for Decomposition and Coordination on Multicore Architectures. Microsoft Press, 2010. Google ScholarDigital Library
- Collections. Concurrent (CC). July'12, http://msdn.microsoft.com/en-us/library/dd997305.aspx/.Google Scholar
- CodePlex. July'12, http://codeplex.com.Google Scholar
- T. Dey, Wei Wang, J. W. Davidson, and M. L. Soffa. Characterizing multi-threaded applications based on shared-resource contention. In Performance Analysis of Systems and Software (ISPASS), 2011 IEEE International Symposium on, pages 76--86, 2011. Google ScholarDigital Library
- D. Dig. A refactoring approach to parallelism. Software, IEEE, 28(1):17--22, 2011. Google ScholarDigital Library
- D. Dig, J. Marrero, and M. D. Ernst. How do programs become more concurrent? a story of program transformations. In IWMSE '11: Proceedings of the 4th International Workshop on Multicore Software Engineering, pages 43--50, 2011. Google ScholarDigital Library
- Github. July'12, https://github.com.Google Scholar
- M. Glad well. The Tipping Point: How Little Things Can Make a Big Difference. Back Bay Books, 2002.Google Scholar
- B. Goetz, T. Peierls, J. Bloch, J. Bowbeer, D. Holmes, and D. Lea. Java Concurrency in Practice. Addison-Wesley Professional, 2006. Google ScholarDigital Library
- M. Grechanik, C. McMillan, L. DeFerrari, M. Comi, S. Crespi, D. Poshyvanyk, C. Fu, Q. Xie, and C. Ghezzi. An empirical investigation into a large-scale java open source code repository. In ESEM '10: Proceedings of the 2010 A CM-IEEE International Symposium on Empirical Software Engineering and Measurement, pages 1--10, 2010. Google ScholarDigital Library
- L. Hochstein, F. Shull, and L. B. Reid. The role of mpi in development time: a case study. In SC Conference, pages 1--10, 2008. Google ScholarDigital Library
- S. Karus and H. Gall. A study of language usage evolution in open source software. In MSR '11: Proceedings of the 8th Working Conference on Mining Software Repositories, pages 13--22, 2011. Google ScholarDigital Library
- D. Lea. Concurrent Programming in Javat: Design Principles and Pattern. Prentice Hall, 1999. Google ScholarDigital Library
- D. Leijen, W. Schulte, and S. Burckhardt. The design of a task parallel library. ACM SIGPLAN Not., 44(10):227--242, 2009. Google ScholarDigital Library
- B. P. Lester. The Art of Parallel Programming. 1st World Publishing, Inc., 2006.Google Scholar
- T. G. Mattson, B. A. Sanders, and B. L. Massingill. Patterns for Parallel Programming. Addison-Wesley Professional, 2005. Google ScholarDigital Library
- M. Monperrus, M. Eichberg, E. Tekes, and M. Mezini. What should developers be aware of? an empirical study on the directives of api documentation. Empirical Software Engineering, Online Edition, 2011. Google ScholarDigital Library
- Survival of the Forgest. July'12, http://redmonk.com/sogrady/2011/06/02/blackduck-webinar/.Google Scholar
- V. Pankratius. Automated usability evaluation of parallel programming constructs. In ICSE '11 (NIER track): Proceedings of the 33rd International Conference on Software Engineering, pages 936--939, 2011. Google ScholarDigital Library
- V. Pankratius, C. Schaefer, A. Jannesari, and W. F. Tichy. Software engineering for multicore systems: an experience report. In IWMSE '08: Proceedings of the 1st international workshop on Multicore software engineering, pages 53--60, 2008. Google ScholarDigital Library
- C. Parnin, C. Bird, and E. Murphy-Hill. Java generics adoption: how new features are introduced, championed, or ignored. In MSR '11: Proceedings of the 8th Working Conference on Mining Software Repositories, pages 3--12, 2011. Google ScholarDigital Library
- Parallel Language Integrated Query (PLINQ). July'12, http://msdn.microsoft.com/en-us/library/dd460688.aspx/.Google Scholar
- AppVisum Project. July'12, https://github.com/Alxandr/AppVisum.Sys.Google Scholar
- Backgrounded Project. July'12, http://www.github.com/swedishkid/backgrounded.Google Scholar
- DotNetWebToolkit Project. July'12 https://github.com/chrisdunelm/DotNetWebToolkit.Google Scholar
- Gpxviewer Project. July'12, https://github.com/andrewgee/gpxviewer.Google Scholar
- PasswordGenerator Project. July'12, https://github.com/PanosSakkos/PasswordGenerator.Google Scholar
- Profit Project. July'12, http://profit.codeplex.com/.Google Scholar
- Ravendb Project. July'12, https://github.com/ravendb/ravendb.Google Scholar
- The Roslyn Project. July'12, http://msdn.microsoft.com/en-us/hh500769.Google Scholar
- Martin P. Robillard and Robert Deline. A field study of api learning obstacles. Empirical Software Engineering, 16(6):703--732, 2011. Google ScholarCross Ref
- System.Threading. July'12, http://msdn.microsoft.com/en-us/library/system.threading.Google Scholar
- Threading Building Block (TBB). July'12, http://threadingbuildingblocks.org/.Google Scholar
- W. Torres, G. Pinto, B. Fernandes, J. P. Oliveira, F. A. Ximenes, and F. Castor. Are java programmers transitioning to multicore?: a large scale study of java floss. In SPLASH '11 Workshops, pages 123--128, 2011. Google ScholarDigital Library
- Companion TPL usage data. July'12, http://learnparallelism.net.Google Scholar
- ForkJoinTask Doug Lea's Workstation. July'12, http://gee.cs.oswego.edu/dl/jsr166/dist/jsr166ydocs/jsr166y/ForkJoinTask.html.Google Scholar
Index Terms
- How do developers use parallel libraries?
Recommendations
Parallelization libraries: Characterizing and reducing overheads
Creating efficient, scalable dynamic parallel runtime systems for chip multiprocessors (CMPs) requires understanding the overheads that manifest at high core counts and small task sizes.
In this article, we assess these overheads on Intel's Threading ...
Efficient use of parallel libraries on heterogeneous networks of workstations
Heterogeneous distributed and parallel architectures: hardware, software and design tools
Comments