For improving the performance of an application, we have to examine the application's source code. CCA/EBT extracts the syntactic/semantic structures from the source code written in Fortran, and then provides outline views of the loop-nests and the call trees decorated with source code metrics.
A docker image of CCA/EBT is available from a Docker Hub repository. You can try it by way of a helper script, which requires Docker and Python (2.7). When you install Docker, you should follow the instructions provided for various platforms: Mac (OSX Yosemite 10.10.3 or above), Windows (requires Windows 10 Professional or Enterprise 64-bit), Ubuntu, Debian, CentOS, and Fedora.
We assume that the helper script
ebt.py is located in the current
$ ./ebt.py outline DIR
Outlines Fortran programs in
$ ./ebt.py treeview start DIR
Starts tree view service on port 18000 (default). You can access the viewer by entering http://localhost:18000/ in a browser. Note that at least a loop that contains floating-point operations and array references should occur in the programs. Otherwise, no program will be shown in the viewer.
$ ./ebt.py treeview stop DIR
Stops the viewer service.
$ ./ebt.py opcount DIR
Counts the occurrences of operations and array references for each
Fortran program found in
DIR. The results are dumped into a directory
Thhmmss in JSON format.
Based on CCA framework, CCA/EBT provides the following:
- a Fortran parser,
- scripts for topic analysis, outlining, and operation counting of Fortran programs,
- a web application that shows tree views of the outlines, and
- ontologies for Fortran entities.
The parser export resulting facts such as ASTs and other syntactic information in XML or N-Triples. In particular, facts in N-Triples format are loaded into an RDF store Virtuoso to build a factbase, or a database of facts. Factbases are intended to be queried for code comprehension tasks.
Building the parser(s)
- GNU make
- OCaml (>=4.02)
- Ocamlnet (>=4.1.0)
- PXP (>=1.2.8)
- OCaml CSV
The following create
$ cd src $ make
It is called from a shell script
- Masatomo Hashimoto, Masaaki Terai, Toshiyuki Maeda, and Kazuo Minami. 2018. CCA/EBT: Code Comprehension Assistance Tool for Evidence-Based Performance Tuning. Poster to be presented at International Conference on High Performance Computing in Asia-Pacific Region (HPC Asia 2018), P18.
- Masatomo Hashimoto, Masaaki Terai, Toshiyuki Maeda, and Kazuo Minami. 2017. An Empirical Study of Computation-Intensive Loops for Identifying and Classifying Loop Kernels. In Proc 8th ACM/SPEC International Conference on Performance Engineering (ICPE 2017), 361–372.
- Masatomo Hashimoto, Masaaki Terai, Toshiyuki Maeda, and Kazuo Minami. 2015. Extracting Facts from Performance Tuning History of Scientific Applications for Predicting Effective Optimization Patterns. In Proc 12th IEEE/ACM Working Conference on Mining Software Repositories (MSR 2015), 13–23.
Apache License, Version 2.0