Compile-Time Library Call Detection Using CAASCADE and XALT
CAASCADE — Compiler-Assisted Application Source Code Analysis and DatabasE—is a tool that summarizes the use of parallel programming language features in application source code using compiler technology. This paper discusses the library detection capability within CAASCADE to find information about the usage of scientific libraries within the source code. The information that CAASCADE collects provides insights into the usage of library calls in an applications. CAASCADE can classify the APIs by scientific libraries (e.g. LAPACK, BLAS, FFTW, etc). It can also detect the context in which a library API is being invoked, for example within a serial or multi-threaded region. To collect this information, CAASCADE uses compiler plugins that summarize procedural information and uses Apache Spark to do inter-procedural analysis to reconstruct call chains. In addition to this, we also integrated CAASCADE to work with XALT to collect library information based on linkage and modules installed on a system.
KeywordsHPC scientific libraries Source code analysis Libraries usage in applications
This material is based upon work supported by the U.S. Department of Energy, Office of Science, Office of Advanced Scientific Computing Research, under contract number DE-AC05-00OR22725. This research used resources of the Oak Ridge Leadership Computing Facility at the Oak Ridge National Laboratory, which is supported by the Office of Science of the U.S. Department of Energy under Contract No. DE-AC05-00OR22725. This project is sponsored by the Laboratory Directed Research and Development (LDRD) Program of Oak Ridge National Laboratory, managed by UT-Battelle, LLC, for the U.S. Department of Energy via the LDRD project 8277: “Understanding HPC Applications for Evidence-based Co-design”.
- 1.Budiardja, R., Fahey, M., McLay, R., Don, P.M., Hadri, B., James, D.: Community use of XALT in its first year in production. In: Proceedings of the Second International Workshop on HPC User Support Tools, HUST 2015, pp. 4:1–4:10. ACM, New York (2015)Google Scholar
- 3.Lopez, M.G., Hernandez, O., Budiardja, R.D., Wells, J.: Caascade: a system for static analysis of HPC software portfolios. In: Proceedings of 6TH Workshop on Extreme-Scale Programming Tools (2018). (to be published)Google Scholar
- 4.Budiardja, R.D., Agrawal, K., Fahey, M., McLay, R., James, D.: Library function tracking with XALT. In: Proceedings of the XSEDE 2016 Conference on Diversity, Big Data, and Science at Scale, XSEDE 2016, pp. 30:1–30:7. ACM, New York (2016)Google Scholar
- 5.Bacon, D.F., Sweeney, P.F.: Fast static analysis of c++ virtual function calls. In: Proceedings of the 11th ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA 1996, pp. 324–341. ACM, New York (1996)Google Scholar
- 6.Summit Supercomputer. https://www.olcf.ornl.gov/olcf-resources/compute-systems/summit/
- 7.Budiardja, R.D., Lopez, M.G., Zhao, J., Hernandez, O., Sarkar, V., Wells, J.: Using CAASCADE and CrayPAT for analysis of HPC applications. In: Proceedings of Cray User Group (2018) (to be published)Google Scholar
- 8.Horwitz, S., Reps, T., Binkley, D.: Interprocedural slicing using dependence graphs. In: Proceedings of the ACM SIGPLAN 1988 Conference on Programming Language Design and Implementation, PLDI 1988, pp. 35–46. ACM, New York (1988)Google Scholar
- 9.Ammons, G., Bodík, R., Larus, J.R.: Mining specifications. In: Proceedings of the 29th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2002, pp. 4–16. ACM, New York (2002)Google Scholar
- 10.Murali, V., Chaudhuri, S., Jermaine, C.: Bayesian specification learning for finding API usage errors. In: Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering, ESEC/FSE 2017, pp. 151–162. ACM, New York (2017)Google Scholar
- 11.Andersen, L.O.: Program analysis and specialization for the c programming language. Technical report (1994)Google Scholar