Who is in charge here?
The CLAW is our master.
The CLAW chooses who will go and who will stay.
-- Buzz Lightyear & Two Green Aliens in the UFO Catcher.
What is the CLAW Compiler?
The CLAW Compiler is a source-to-source translator working on the XcodeML intermediate representation. It implements the necessary transformation to the CLAW Directive Language Specifications. Intent of this language is to achieve performance portability on weather and climate code, especially for column- or point-wise computation.
CLAW Directive Language Specifications
The directives that control the transformation flow are defined in the CLAW Directive Language Specification.
- FPP: standard preprocessor.
- OMNI F_Front: FORTRAN front-end. Convert FORTRAN source code into an intermediate representation (XcodeML/F).
- CLAWX2T: CLAW XcodeML to XcodeML translator.
- OMNI F_Back: FORTRAN back-end. Generates FORTRAN code from XcodeML/F intermediate representation.
- OMNI C_Back: C back-end. Generates C code from XcodeML/C intermediate representation.
CLAWX2T Java Library Stack Overview
The CLAW XcodeML to XcodeML translator library stack is divided in three distinct library:
- CLAW-WANI: CLAW translator implementation with all high-level transformation as well as mechanism to plug external translator and transformation.
- CLAW-SHENRON: Define the super classes for any translator or transformation implementation.
- CLAW-TATSU: Define the interface between XcodeML IR and the translation library. Implements all primitive transformations that serve as higher-level transformation building block.
How to install
See INSTALL.md file.
To generate the java documentation and the compiler documentation, run the
following command. The compiler documentation require
The compiler documentation is generated in the
/documentation directory, the
developer's guide is generated in the
/documentation/developer directory and
javadoc is generated in the
The CLAW XcodeML to XcodeML translator is written in Java. Java version 7 and above are supported.
The CLAW Compiler is built on the top of the OMNI Compiler. For more information: OMNI Compiler website
This work was initially funded by the ETH zürich and the PASC initiative under the ENIAC project.
Logo by adrienbachmann.ch