Skip to main content
Log in

UPC-CHECK: a scalable tool for detecting run-time errors in Unified Parallel C

  • Special Issue Paper
  • Published:
Computer Science - Research and Development

Abstract

Unified Parallel C (UPC) is a language used to write parallel programs for distributed memory parallel computers. UPC-CHECK (http://hpcgroup.public.iastate.edu/UPC-CHECK/) is a scalable tool developed to automatically detect argument errors in UPC functions and deadlocks in UPC programs at run-time and issue high quality error messages to help programmers quickly fix those errors. The run-time complexity of all detection techniques used are optimal, i.e. O(1) except for deadlocks involving locks where it is theoretically known to be linear in the number of threads. The tool is easy to use, and involves merely replacing the compiler command with upc-check. Error messages issued by UPC-CHECK were evaluated using the UPC RTED test suite for argument errors in UPC functions and deadlocks. Results of these tests show that the error messages issued by UPC-CHECK for these tests are excellent.

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

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3

Similar content being viewed by others

References

  1. High Performance Computing (HPC) Group, Iowa State University. http://www.it.iastate.edu/research/hpcg/

  2. The High Performance Computing Laboratory, The George Washington University. http://upc.gwu.edu

  3. Sun Microsystem’s HPC ClusterTools. http://www.sun.com/software/products/clustertools

  4. UPC NAS Parallel Benchmarks. http://threads.hpcl.gwu.edu/sites/npb-upc

  5. Chauvin S, Saha P, Cantonnet F, Annareddy S, El-Ghazawi T (2005) UPC manual. http://upc.gwu.edu/downloads/Manual-1.2.pdf

  6. Coyle J, Hoekstra J, Kraeva M, Luecke GR, Kleiman E, Srinivas V, Tripathi A, Weiss O, Wehe A, Xu Y, Yahya M (2008) UPC run-time error detection test suite. http://rted.public.iastate.edu/UPC/

  7. DeSouza J, Kuhn B, de Supinski BR, Samofalov V, Zheltov S, Bratanov S (2005) Automated, scalable debugging of MPI programs with Intel®message checker. In: Proceedings of the second international workshop on software engineering for high performance computing system applications, SE-HPCS ’05. ACM, New York, pp 78–82. 10.1145/1145319.1145342

    Chapter  Google Scholar 

  8. Ebnenasir A (2011) UPC-SPIN: a framework for the model checking of UPC programs. In: Proceedings of fifth conference on partitioned global address space programming models, PGAS’11. http://pgas11.rice.edu/papers/Ebnenasir-UPC-Model-Checking-PGAS11.pdf

    Google Scholar 

  9. El-Ghazawi T, Carlson W, Sterling T, Yelick K (2003) UPC: distributed shared memory programming. Wiley-Interscience, New York

    Google Scholar 

  10. High Performance Computing Group, ISU: User’s guide for UPC-CHECK 1.0 (2011). http://hpcgroup.public.iastate.edu/UPC-CHECK/UPC-CHECK_UsersGuide.pdf

  11. Hilbrich T, de Supinski BR, Schulz M, Müller MS (2009) A graph based approach for MPI deadlock detection. In: Proceedings of the 23rd international conference on supercomputing, ICS ’09. ACM, New York, pp 296–305. 10.1145/1542275.1542319

    Chapter  Google Scholar 

  12. Kraeva M, Coyle J, Luecke GR, Roy I, Kleiman E, Hoekstra J (2012) UPC-CompilerCheck: a tool for evaluating error detection capabilities of UPC compilers. http://hpcgroup.public.iastate.edu/papers/UPC.CTED.Paper.pdf. Preprint

  13. Krammer B, Müller M, Resch M (2004) MPI application development using the analysis tool marmot. In: Bubak M, van Albada G, Sloot P, Dongarra J (eds) Computational science—ICCS 2004. Lecture notes in computer science, vol 3038. Springer, Berlin, pp 464–471. 10.1007/978-3-540-24688-6_61

    Chapter  Google Scholar 

  14. Luecke GR, Coyle J, Hoekstra J, Kraeva M, Roy I (2011) UPC-CHECK tutorial. http://hpcgroup.public.iastate.edu/UPC-CHECK/UPC-CHECK_Tutorial_Aug_30.pptx

  15. Luecke GR, Coyle J, Hoekstra J, Kraeva M, Xu Y, Kleiman E, Weiss O (2009) Evaluating error detection capabilities of UPC run-time systems. In: Proceedings of the third conference on partitioned global address space programing models, PGAS’09. ACM, New York, pp 7:1–7:4. 10.1145/1809961.1809971

    Google Scholar 

  16. Luecke GR, Coyle J, Hoekstra J, Kraeva M, Xu Y, Park MY, Kleiman E, Weiss O, Wehe A, Yahya M (2010) The importance of run-time error detection. In: Muller MS, Resch MM, Schulz A, Nagel WE (eds) Tools for high performance computing 2009. Springer, Berlin, pp 145–155. 10.1007/978-3-642-11261-4_10

    Chapter  Google Scholar 

  17. Luecke GR, Zou Y, Coyle J, Hoekstra J, Kraeva M (2002) Deadlock detection in MPI programs. Concurrency Computat, Pract Exper 14(11):911–932. 10.1002/cpe.701

    Article  MATH  Google Scholar 

  18. Petersen P, Shah S (2003) OpenMP support in the Intel® Thread checker. In: Voss M (ed) OpenMP shared memory parallel programming. Lecture notes in computer science, vol 2716. Springer, Berlin, pp 1–12. 10.1007/3-540-45009-2_1

    Chapter  Google Scholar 

  19. Pirkelbauer P, Liao C, Panas T, Quinlan D (2011) Runtime detection of c-style errors in upc code. In: Proceedings of fifth conference on partitioned global address space programming models, PGAS’11. http://pgas11.rice.edu/papers/PirkelbauerEtAl-UPC-Error-Detect-PGAS11.pdf

    Google Scholar 

  20. Quinlan DJ et al ROSE compiler project. http://www.rosecompiler.org/

  21. Roy I (2012) UPC-CHECK: a scalable tool for detecting run-time errors in Unified Parallel C. Master’s thesis, Iowa State University, Ames, Iowa, USA. Preprint

  22. Roy I, Luecke GR, Coyle J, Kraeva M, Hoekstra J (2012) An optimal deadlock detection algorithm for Unified Parallel C. http://hpcgroup.public.iastate.edu/papers/Deadlock_Dectection_for_UPC.pdf. Preprint

  23. The UPC Consortium: UPC language specifications (v1.2) (2005). http://www.gwu.edu/~upc/docs/upc_specs_1.2.pdf

  24. Vetter JS, de Supinski BR (2000) Dynamic software testing of MPI applications with umpire. In: Proceedings of the 2000 ACM/IEEE conference on supercomputing (CDROM), Supercomputing ’00. IEEE Computer Society, Washington. http://dl.acm.org/citation.cfm?id=370049.370462

    Google Scholar 

Download references

Acknowledgements

This work was supported by the United States Department of Defense & used resources of the Extreme Scale Systems Center at Oak Ridge National Laboratory.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Glenn R. Luecke.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Coyle, J., Roy, I., Kraeva, M. et al. UPC-CHECK: a scalable tool for detecting run-time errors in Unified Parallel C. Comput Sci Res Dev 28, 203–209 (2013). https://doi.org/10.1007/s00450-012-0214-4

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00450-012-0214-4

Keywords

Navigation