Analyzing parallel programs with pin

  • Bach M
  • Charney M
  • Cohn R
 et al. 
  • 64


    Mendeley users who have this article in their library.
  • 59


    Citations of this article.


Software instrumentation provides the means to collect information on and efficiently analyze parallel programs. Using Pin, developers can build tools to detect and examine dynamic behavior including data races, memory system behavior, and parallelizable loops. cessor systems. In the past few years, multicore systems have become pervasive, and more programmers want to employ parallelism to wring the most performance out of their applications. Exploiting multiple cores introduces new correctness A 56 COMPUTER and performance problems such as data races, deadlocks, load balancing, and false sharing. Old problems such as memory corruption become more difficult because parallel programs can be nondeterministic. Programmers need a deeper understanding of their softwares dynamic behavior to successfully make the transition from single to multiple threads and processes. decade ago, systems with multiple processors were expensive and relatively rare; only developers with highly specialized skills could successfully parallelize server and scientific applications to exploit the power of multipro- Instrumentation is one tool for collecting the information needed to understand programs. Instrumentation based tools typically insert extra code into a program to record events during execution.1-4 The cost of executing the extra code can be as low as a few cycles, enabling fine-grained observation down to the instruction level. Pin2 ( is a software system that per- forms runtime binary instrumentation of Linux and Microsoft Windows applications. Pins aim is to provide an instrumentation platform for building a wide variety of program analysis tools, called pintools. By performing the instrumentation on the binary at runtime, Pin eliminates the need to modify or recompile the applications source and supports the instrumentation of programs that dynamically generate code.

Author-supplied keywords

  • Computer architectures
  • Computer systems organization
  • Multiple processor systems
  • Operating systems
  • Processor architectures
  • Software engineering

Get free article suggestions today

Mendeley saves you time finding and organizing research

Sign up here
Already have an account ?Sign in

Find this document


  • Moshe Bach

  • Mark Charney

  • Robert Cohn

  • Elena Demikhovsky

  • Tevi Devor

  • Kim Hazelwood

Cite this document

Choose a citation style from the tabs below

Save time finding and organizing research with Mendeley

Sign up for free