Skip to main content

Race Detectors for Cilk and Cilk++ Programs

  • Reference work entry
Encyclopedia of Parallel Computing

Synonyms

Cilkscreen; Nondeterminator

Definition

The Nondeterminator race detector takes as input an ostensibly deterministic Cilk program and an input data set and makes the following guarantee: it will either determine at least one location in the program that is subject to a determinacy race when the program is run on the data set, or else it will certify that the program always behaves the same on the data set, no matter how it is scheduled. The Cilkscreen race detector does much the same thing for Cilk++ programs. Both can also detect data races, but the guarantee is somewhat weaker.

Discussion

Introduction

Many Cilk programs are intended to be deterministic, in that a given program produces the same behavior no matter how it is scheduled. The program may behave nondeterministically, however, if a determinacy raceoccurs: two logically parallel instructions update the same location, where at least one of the two instructions writes the location. In this case, different runs of the...

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 1,600.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Hardcover Book
USD 1,799.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Bibliography

  1. Appelbe WF, McDowell CE (1985) Anomaly reporting: a tool for debugging and developing parallel numerical algorithms. In: Proceedings of the 1st international conference on supercomputing systems. IEEE, pp 386–391

    Google Scholar 

  2. Balasundaram V, Kennedy K (1986) Compile-time detection of race conditions in a parallel program. In: Proceedings of the 3rd international conference on supercomputing, ACM Press, New York, pp 175–185

    Google Scholar 

  3. Bender MA, Cole R, Demaine ED, Farach-Colton M, Zito J (2002) Two simplified algorithms for maintaining order in a list. In: Proceedings of the European syposium on algorithms, pp 152–164

    Google Scholar 

  4. Bender MA, Fineman JT, Gilbert S, Leiserson CE (2004) On-the-fly maintenance of series-parallel relationships in fork-join multithreaded programs. In: Proceedings of the sixteenth annual ACM symposium on parallel algorithms and architectures, Barcelona, Spain, June 2004, pp 133–144

    Google Scholar 

  5. Bruening D (2004) Efficient, transparent, and comprehensive runtime code manipulation. Ph.D. thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology

    Google Scholar 

  6. Callahan D, Sublok J (1988) Static analysis of low-level synchronization. In: Proceedings of the 1988 ACM SIGPLAN and SIGOPS workshop on parallel and distributed debugging, ACM Press, New York, pp 100–111

    Google Scholar 

  7. Cheng G-I, Feng M, Leiserson CE, Randall KH, Stark AF (1988) Detecting data races in Cilk programs that use locks. In: Proceedings of the ACM symposium on parallel algorithms and architectures, June 1998, pp 298–309

    Google Scholar 

  8. Choi J-D, Miller BP, Netzer RHB (1991) Techniques for debugging parallel programs with flowback analysis. ACM Trans Program Lang Syst 13(4):491–530

    Article  Google Scholar 

  9. Cormen TH, Leiserson CE, Rivest RL, Stein C (2009) Introduction to algorithms, 3rd edn. MIT Press, Cambridge

    MATH  Google Scholar 

  10. Dietz PF (1982) Maintaining order in a linked list. In: Proceedings of the ACM symposium on the theory of computing, May 1982, pp 122–127

    Google Scholar 

  11. Dietz PF, Sleator DD (1987) Two algorithms for maintaining order in a list. In: Proceedings of the ACM symposium on the theory of computing, May 1987, pp 365–372

    Google Scholar 

  12. Dinning A, Schonberg E (1990) An empirical comparison of monitoring algorithms for access anomaly detection. In: Proceedings of the ACM SIGPLAN symposium on principles and practice of parallel programming, pp 1–10

    Google Scholar 

  13. Dinning A, Schonberg E (1991) Detecting access anomalies in programs with critical sections. In: Proceedings of the ACM/ONR workshop on parallel and distributed debugging, May 1991, ACM Press, pp 85–96

    Google Scholar 

  14. Emrath PA, Ghosh S, Padua DA (1989) Event synchronization analysis for debugging parallel programs. In: Proceedings of the 1989 ACM/IEEE conference on supercomputing, November 1989, pp 580–588

    Google Scholar 

  15. Emrath PA, Padua DA (1988) Automatic detection of nondeterminacy in parallel programs. In: Proceedings of the workshop on parallel and distributed debugging, Madison, Wisconsin, May 1988, pp 89–99

    Google Scholar 

  16. Feng M, Leiserson CE (1997) Efficient detection of determinacy races in Cilk programs. In: Proceedings of the ACM symposium on parallel algorithms and architectures, June 1997, pp 1–11

    Google Scholar 

  17. Fineman JT (2005) Provably good race detection that runs in parallel. Master’s thesis, Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science, August 2005

    Google Scholar 

  18. Frigo M, Halpern P, Leiserson CE, Lewin-Berlin S (2009) Reducers and other cilk + + hyperobjects. In: Proceedings of the twenty-first annual symposium on parallelism in algorithms and architectures, pp 79–90

    Google Scholar 

  19. Frigo M, Leiserson CE, Randall KH (1998) The implementation of the Cilk-5 multithreaded language. In: Proceedings of the ACM SIGPLAN conference on programming language design and implementation, pp 212–223

    Google Scholar 

  20. Gabow HN, Tarjan RE (1985) A linear-time algorithm for a special case of disjoint set union. J Comput System Sci 30(2): 209–221

    Article  MATH  MathSciNet  Google Scholar 

  21. Helmbold DP, McDowell CE, Wang J-Z (1990) Analyzing traces with anonymous synchronization. In: Proceedings of the 1990 international conference on parallel processing, August 1990. pp II70–II77

    Google Scholar 

  22. Steele GL Jr (1990) Making asynchronous parallelism safe for the world. In: Proceedings of the seventeenth annual ACM symposium on principles of programming languages, ACM Press, pp 218–231

    Google Scholar 

  23. Luk C-K, Cohn R, Muth R, Patil H, Klauser A, Lowney G, Wallace S, Reddi VJ, Hazelwood K (2005) Pin: building customized program analysis tools with dynamic instrumentation. In: Proceedings of the 2005 ACM SIGPLAN conference on programming language design and implementation, ACM Press, New York, pp 190–200

    Google Scholar 

  24. Mellor-Crummey J (1991) On-the-fly detection of data races for programs with nested fork-join parallelism. In: Proceedings of supercomputing, pp 24–33

    Google Scholar 

  25. Mellor-Crummey J (1993) Compile-time support for efficient data race detection in shared-memory parallel programs. In: Proceedings of the ACM/ONR workshop on parallel and distributed debugging, San Diego, California, May 1993. ACM Press, pp 129–139

    Google Scholar 

  26. Miller BP, Choi J-D (1988) A mechanism for efficient debugging of parallel programs. In: Proceedings of the 1988 ACM SIGPLAN conference on programming language design and implementation, Atlanta, Georgia, June 1988, pp 135–144

    Google Scholar 

  27. Nethercote N, Seward J (2007) Valgrind: A framework for heavyweight dynamic binary instrumentation. In: Proceedings of the ACM SIGPLAN 2007 conference on programming language design and implementaion, ACM, San Diego, June 2007, pp 89–100

    Google Scholar 

  28. Netzer RHB, Ghosh S (1992) Efficient race condition detection for shared-memory programs with post/wait synchronization. In: Proceedings of the 1992 international conference on parallel processing, St. Charles, Illinois, August 1992

    Google Scholar 

  29. Netzer RHB, Miller BP (1990) On the complexity of event ordering for shared-memory parallel program executions. In: Proceedings of the 1990 international conference on parallel processing, August 1990. pp II:93–97

    Google Scholar 

  30. Netzer RHB, Miller BP (1991) Improving the accuracy of data race detection. In: Proceedings of the third ACM SIGPLAN symposium on principles and practice of parallel programming, New York, NY, USA. ACM Press, pp 133–144

    Google Scholar 

  31. Netzer RHB, Miller BP (1992) What are race conditions? ACM Lett Program Lang Syst 1(1):74–88

    Article  Google Scholar 

  32. Nudler I, Rudolph L (1986) Tools for the efficient development of efficient parallel programs. In: Proceedings of the first Israeli conference on computer systems engineering, May 1986

    Google Scholar 

  33. Savage S, Burrows M, Nelson G, Sobalvarro P, Anderson T (1997) Eraser: a dynamic race detector for multi-threaded programs. In: Proceedings of the sixteenth ACM symposium on operating systems principles (SOSP), ACM Press, New York, pp 27–37

    Google Scholar 

  34. Tarjan RE (1975) Efficiency of a good but not linear set union algorithm. J ACM 22(2):215–225

    Article  MATH  MathSciNet  Google Scholar 

  35. Tarjan RE (1983) Data structures and network algorithms. Society for Industrial and Applied Mathematics, Philadelphia

    Book  Google Scholar 

  36. Taylor RN (1983) A general-purpose algorithm for analyzing concurrent programs. Commun ACM 26(5):361–376

    Article  Google Scholar 

  37. Tsakalidis AK (1984) Maintaining order in a generalized linked list. Acta Inform 21(1):101–112

    Article  MATH  MathSciNet  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer Science+Business Media, LLC

About this entry

Cite this entry

Fineman, J.T., Leiserson, C.E. (2011). Race Detectors for Cilk and Cilk++ Programs. In: Padua, D. (eds) Encyclopedia of Parallel Computing. Springer, Boston, MA. https://doi.org/10.1007/978-0-387-09766-4_494

Download citation

Publish with us

Policies and ethics