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.
Similar content being viewed by others
References
High Performance Computing (HPC) Group, Iowa State University. http://www.it.iastate.edu/research/hpcg/
The High Performance Computing Laboratory, The George Washington University. http://upc.gwu.edu
Sun Microsystem’s HPC ClusterTools. http://www.sun.com/software/products/clustertools
UPC NAS Parallel Benchmarks. http://threads.hpcl.gwu.edu/sites/npb-upc
Chauvin S, Saha P, Cantonnet F, Annareddy S, El-Ghazawi T (2005) UPC manual. http://upc.gwu.edu/downloads/Manual-1.2.pdf
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/
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
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
El-Ghazawi T, Carlson W, Sterling T, Yelick K (2003) UPC: distributed shared memory programming. Wiley-Interscience, New York
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
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
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
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
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
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
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
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
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
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
Quinlan DJ et al ROSE compiler project. http://www.rosecompiler.org/
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
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
The UPC Consortium: UPC language specifications (v1.2) (2005). http://www.gwu.edu/~upc/docs/upc_specs_1.2.pdf
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
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
Corresponding author
Rights 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
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00450-012-0214-4