Automatic Testing of OpenACC Applications

Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10732)


PCAST (PGI Compiler-Assisted Software Testing) is a feature being developed in the PGI compilers and runtime to help users automate testing high performance numerical programs. PCAST normally works by running a known working version of a program and saving intermediate results to a reference file, then running a test version of a program and comparing the intermediate results against the reference file. Here, we describe the special case of using PCAST on OpenACC programs running on a GPU-accelerated system. Instead of saving to and comparing against a reference file, the compiler generates code to run each compute region on both the host CPU and the GPU. The values computed on the host and GPU are then compared, using OpenACC data directives and clauses to decide what data to compare.


Program testing Relative debugging Reproducibility OpenACC GPU 


  1. 1.
    The OpenACC Application Programming Interface, Version 2.5 (2016).
  2. 2.
    Goldberg, D.: What every computer scientist should know about floating-point arithmetic. ACM Comput. Surv. 23(1), 5–47 (1991)CrossRefGoogle Scholar
  3. 3.
    Wolfe, M., Lee, S., Kim, J., Tian, X., Xu, R., Chandrasekaran, S., Chapman, B.: Implementing the OpenACC data model. In: Parallel and Distributed Processing Symposium Workshops, Lake Buena Vista, Fla., pp. 662–672, May 2017Google Scholar
  4. 4.
    Bartlett, J., Gray, J., Horst, B.: Fault Tolerance in Tandem Computer Systems, Tandem Computers, Cal., Technical report 86.2, March 1986Google Scholar
  5. 5.
    Fraser, D.C., Felleman, P.G.: Digital fly-by-wire computers lead the way. Astronaut. Aeronaut. 12, 24–32 (1974)Google Scholar
  6. 6.
    Abramson, D.A., Sosic, R.: Relative debugging: a new debugging paradigm. School of Computing and Information Technology, Faculty of Science and Technology, Griffith University (1994)Google Scholar
  7. 7.
    Abramson, D., Foster, I., Michalakes, J., Sosič, R.: Relative debugging: a new methodology for debugging scientific applications. Commun. ACM 39(11), 69–77 (1996)CrossRefGoogle Scholar
  8. 8.
    Jost, G., Hood, R.: Relative debugging of automatically parallelized programs. Autom. Softw. Eng. 10(1), 75–101 (2003)CrossRefGoogle Scholar
  9. 9.
    Matthews, G., Hood, R., Jin, H., Johnson, S., Ierotheou, C., et al.: Automatic relative debugging of OpenMP programs. In: Proceedings of EWOMP, Aachen, Germany (2003)Google Scholar
  10. 10.
    DeRose, L., Gontarek, A., Vose, A., Moench, R., Abramson, D., Dinh, M.N., Jin, C.: Relative debugging for a highly parallel hybrid computer system. In: Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis, SC 2015, November 2015Google Scholar
  11. 11.
    Lee, S., Vetter, J.S.: OpenARC: open accelerator research compiler for directive-based, efficient heterogeneous computing. In: Proceedings of the 23rd International Symposium on High-performance Parallel and Distributed Computing, pp. 115–120, June 2014Google Scholar
  12. 12.
    Lee, S., Le, D., Vetter, J.S.: Interactive programming debugging and optimization for directive-based, efficient GPU computing. In: Proceedings of the 28th International Parallel and Distributed Processing Symposium, May 2014Google Scholar
  13. 13.
    Sato, K., Ahn, D.H., Laguna, I., Lee, G.L., Schulz, M.: Clock delta compression for scalable order-replay of non-deterministic parallel applications. In: International Conference for High Performance Computing, Networking, Storage and Analysis, SC 2015, pp. 1–12. IEEE (2015)Google Scholar

Copyright information

© Springer International Publishing AG 2018

Authors and Affiliations

  1. 1.University of UtahSalt Lake CityUSA
  2. 2.NVIDIA/PGIBeavertonUSA

Personalised recommendations