[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/2393596.2393660acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

How do developers use parallel libraries?

Published: 11 November 2012 Publication History

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.

References

[1]
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.
[2]
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.
[3]
Collections. Concurrent (CC). July'12, http://msdn.microsoft.com/en-us/library/dd997305.aspx/.
[4]
CodePlex. July'12, http://codeplex.com.
[5]
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.
[6]
D. Dig. A refactoring approach to parallelism. Software, IEEE, 28(1):17--22, 2011.
[7]
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.
[8]
Github. July'12, https://github.com.
[9]
M. Glad well. The Tipping Point: How Little Things Can Make a Big Difference. Back Bay Books, 2002.
[10]
B. Goetz, T. Peierls, J. Bloch, J. Bowbeer, D. Holmes, and D. Lea. Java Concurrency in Practice. Addison-Wesley Professional, 2006.
[11]
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.
[12]
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.
[13]
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.
[14]
D. Lea. Concurrent Programming in Javat: Design Principles and Pattern. Prentice Hall, 1999.
[15]
D. Leijen, W. Schulte, and S. Burckhardt. The design of a task parallel library. ACM SIGPLAN Not., 44(10):227--242, 2009.
[16]
B. P. Lester. The Art of Parallel Programming. 1st World Publishing, Inc., 2006.
[17]
T. G. Mattson, B. A. Sanders, and B. L. Massingill. Patterns for Parallel Programming. Addison-Wesley Professional, 2005.
[18]
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.
[19]
Survival of the Forgest. July'12, http://redmonk.com/sogrady/2011/06/02/blackduck-webinar/.
[20]
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.
[21]
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.
[22]
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.
[23]
Parallel Language Integrated Query (PLINQ). July'12, http://msdn.microsoft.com/en-us/library/dd460688.aspx/.
[24]
AppVisum Project. July'12, https://github.com/Alxandr/AppVisum.Sys.
[25]
Backgrounded Project. July'12, http://www.github.com/swedishkid/backgrounded.
[26]
DotNetWebToolkit Project. July'12 https://github.com/chrisdunelm/DotNetWebToolkit.
[27]
Gpxviewer Project. July'12, https://github.com/andrewgee/gpxviewer.
[28]
PasswordGenerator Project. July'12, https://github.com/PanosSakkos/PasswordGenerator.
[29]
Profit Project. July'12, http://profit.codeplex.com/.
[30]
Ravendb Project. July'12, https://github.com/ravendb/ravendb.
[31]
The Roslyn Project. July'12, http://msdn.microsoft.com/en-us/hh500769.
[32]
Martin P. Robillard and Robert Deline. A field study of api learning obstacles. Empirical Software Engineering, 16(6):703--732, 2011.
[33]
System.Threading. July'12, http://msdn.microsoft.com/en-us/library/system.threading.
[34]
Threading Building Block (TBB). July'12, http://threadingbuildingblocks.org/.
[35]
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.
[36]
Companion TPL usage data. July'12, http://learnparallelism.net.
[37]
ForkJoinTask Doug Lea's Workstation. July'12, http://gee.cs.oswego.edu/dl/jsr166/dist/jsr166ydocs/jsr166y/ForkJoinTask.html.

Cited By

View all
  • (2023)How Dynamic Features Affect API Usages? An Empirical Study of API Misuses in Python Programs2023 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER56733.2023.00055(522-533)Online publication date: Mar-2023
  • (2023)How do programmers fix bugs as workarounds? An empirical study on Apache projectsEmpirical Software Engineering10.1007/s10664-023-10318-728:4Online publication date: 28-Jun-2023
  • (2021)Understanding Software-2.0ACM Transactions on Software Engineering and Methodology10.1145/345347830:4(1-42)Online publication date: 23-Jul-2021
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
FSE '12: Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
November 2012
494 pages
ISBN:9781450316149
DOI:10.1145/2393596
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 11 November 2012

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. C#
  2. empirical study
  3. multi-core
  4. parallel libraries

Qualifiers

  • Research-article

Conference

SIGSOFT/FSE'12
Sponsor:

Acceptance Rates

Overall Acceptance Rate 17 of 128 submissions, 13%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)16
  • Downloads (Last 6 weeks)4
Reflects downloads up to 27 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2023)How Dynamic Features Affect API Usages? An Empirical Study of API Misuses in Python Programs2023 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER56733.2023.00055(522-533)Online publication date: Mar-2023
  • (2023)How do programmers fix bugs as workarounds? An empirical study on Apache projectsEmpirical Software Engineering10.1007/s10664-023-10318-728:4Online publication date: 28-Jun-2023
  • (2021)Understanding Software-2.0ACM Transactions on Software Engineering and Methodology10.1145/345347830:4(1-42)Online publication date: 23-Jul-2021
  • (2021)Assessing Coding Metrics for Parallel Programming of Stream Processing Programs on Multi-cores2021 47th Euromicro Conference on Software Engineering and Advanced Applications (SEAA)10.1109/SEAA53835.2021.00044(291-295)Online publication date: Oct-2021
  • (2021)Synthesizing Multi-threaded Tests from Sequential Traces to Detect Communication Deadlocks2021 14th IEEE Conference on Software Testing, Verification and Validation (ICST)10.1109/ICST49551.2021.00013(1-12)Online publication date: May-2021
  • (2021)Statically driven generation of concurrent tests for thread‐safe classesSoftware Testing, Verification and Reliability10.1002/stvr.177431:4Online publication date: 4-May-2021
  • (2020)An empirical study on API parameter rulesProceedings of the ACM/IEEE 42nd International Conference on Software Engineering10.1145/3377811.3380922(899-911)Online publication date: 27-Jun-2020
  • (2020)How C++ Templates Are Used for Generic ProgrammingACM Transactions on Software Engineering and Methodology10.1145/335657929:1(1-49)Online publication date: 30-Jan-2020
  • (2020)TraceSanitizer - Eliminating the Effects of Non-Determinism on Error Propagation Analysis2020 50th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN)10.1109/DSN48063.2020.00025(52-63)Online publication date: Jul-2020
  • (2019)An Empirical Study on API UsagesIEEE Transactions on Software Engineering10.1109/TSE.2017.278228045:4(319-334)Online publication date: 1-Apr-2019
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media