All notable changes to the CLAW Compiler project are documented in this file.
Build system
- added out of source build
- removed CMake-based tests
- made tests run on internal install directory
- added CMake option
ANT_HOME
to explicitly specifyApache Ant
installation - added CMake option
JAVA_HOME
to explicitly specify java installation - added centralised ant solution
CX2T
- moved config files inside jar
- removed static non-final variables
- refactored CLI
- fixed various issues
Driver
- Removed bash-based driver
- Added new java-based driver
- Added tests and unit-tests coverage for the driver
- Added CLI options '-MD' and '-mj' for better integration with GNU Make-based builds
Development
- added Eclipse IDE projects generation from templates
- ported all tests to JUnit
OMNI compiler
- submodule now pointing to omni-compiler/xcodeml-tools@0276bc017876cd8e02a4d54b36c3fe6d4d11c78a
- Switched to CMake based build
- Switched to C++ version of frontend (i.e.
ffront-cpp
instead ofF_Front
) - Added CMake option
BUILD_OMNI_XCODEML_TOOLS
to use pre-installed OMNI (when set toOFF
) - Added CMake option
OMNI_LINK_STATIC_GNU_LIBSTDCXX
to build OMNI with staticlibstdc++
library - Added CLI option
--ffront-debug-dir
to the CLAW driver for replicating failed calls to OMNI
Other
- updated install and developer documentation
- updated sonar to new version
- updated coding style
- OMNI Compiler submodule now pointing to omni-compiler/xcodeml-tools@3bbc8ec4caa31113a7f67ae7371e678c28d613fc
- Added support for NAG compiler
- Various bug fixes
- Serialization is now disabled by default.
- Driver: Add option
sca_forward_update_disabled
to switch globally updates. - Driver: Add option
sca_forward_update_direction
to fine tuned updates. - Driver: Add option
sca_serialization_enabled_direction
to fine tuned serialization. - SCA: fix inserted module use in automatic serialization when serialization is disabled.
array-transform
directive as been renamedexpand
as specified in v2.0 of the CLAW Directive Language Specification.parallel
clause forexpand
directive is implemented.update
clause forexpand
directive is implemented.- beta serialization support for
expand
andsca
elemental directives.- Support Serialbox 2 at the moment (https://github.com/eth-cscs/serialbox2)
- SCA: support for transformation in ELEMENTAL function/subroutine for GPU target
- low-level: block directive like
loop-hoist
can now be nested on the same depth. - driver:
_CRAYFTN
macro is passed directly when Cray preprocessor is used. - OMNI Compiler submodule now pointing to omni-compiler/xcodeml-tools@772cf79077ac5f04cfc204fc7e0b53755a362d8b
- Java 1.8 or newer is now required for CX2T.
- driver: fix preprocessor filename for Cray in dependency resolver
- driver: fix temporary file name being too long in some cases.
- driver: new option
--add-paren
to force parenthesis on mathematical binary operation in code generation. - driver: fix automatic dependency resolver arguments passing (#478)
- SCA: Support model configuration file with the
--model-config=<path>
option. - SCA:
parallelize
can still be used but it is deprecated. Use the new!$claw sca
directive construct. - SCA: in directive dimension definition is still supported as a local model configuration per pragma.
- SCA: Support
model-data
directive. - Various bug fixes.
- OMNI Compiler submodule now pointing to omni-compiler/xcodeml-tools@4f66174b739fa59d15631a9b55457f809ae70d1f
- Current version of OMNI Compiler can fully parse/validate COSMO CPU/GPU.
- SCA: Initial support of OpenMP 4.5 code generation for accelerator.
- SCA: Smart fusion option as CPU transformation strategy. Tries to group adjacent statements together.
loop-hoist
: new clausecleanup
to remove previously defined directive.- Compiler options:
-x=<key:value>
can be used to override configuration parameters. - Configuration file version is checked on the major version number.
- OMNI Compiler submodule now pointing to omni-compiler/xcodeml-tools@95e1bf985330ef14cdd0b1afef9c97999e6b6404
- User comment line can be preserved with the
--keep-comment
option. - SCA: Fix duplicated array references inserted in some cases.
- OMNI Compiler to git hash omni-compiler/xcodml-tools@2b72cd9fc9c6133bf9f806d3b7fc5a369265d605
- OMNI Compiler submodule now pointing to XcodeML-tools omni-compiler/xcodeml-tools
- Various bug fixes
- Support of Intel Compiler preprocessing workflow.
- Clean up properly temporary files when driver exits.
- SCA/CPU: Fix problem with indirect promotion (missing do stmt).
- Move test from
abstraction
tosca
folder. - OMNI Compiler to git hash omni-compiler/omni-compiler@f59978d90cc1d93cf16de125e8dd35ae1d2a6537
New features:
- Option
--target=<target>
or-t=<target>
allows to choose the target for code transformation. - Option
--directive=<directive_language>
or-d=<directive_language>
allows to choose the accelerator directive language used for code generation. - Transformation order is now configurable with the option
--config=
. A default configuration file is available in<INSTALL_DIR>/etc/claw-default.xml
. - New configuration files with user extension.
- OpenACC local arrays strategy private or promote available from configuration.
New available transformations:
- Low-level:
array-transform
kcache
call
loop-hoist
if-extract
verbatim
ignore
- High abstraction (beta):
- Single Column Abstraction
parallelize
parallelize forward
- Single Column Abstraction
Modification:
collapse
clause can be applied toloop-fusion
transformation.- Group configuration must now specify trigger type (translation_unit, directive)
Technical/Architecture change:
- All Java libraries now compiled with Ant.
- Execution of JUnit test cases is driven by Ant.
- Program arguments of claw.ClawX2T is now using Common CLI.
- Preprocessor specific configurations are now stored in
compiler/<compiler_id>.cmake
files. - Some transformations are implemented directly into the driver as they have to be performed before the parsing step.
- The full workflow is now pipelined. Only in debug mode, intermediate files are written to disk.
- CLAW X2T libraries are split in 3 distinct ones. For more information, refer to the developer's guide.
General:
- OMNI Compiler submodule points to the official OMNI Compiler repository. The state of the repository is updated only when the latest changes are tested and validated.
- CX2X XcodeML library: An abstraction of a set of the XcodeML/F intermediate representation that let the elements easily manipulable from Java code.
- CX2X CLAW translator: An XcodeML to XcodeML translator that implements the CLAW language directive v0.1 (loop-fusion, loop-interchange, loop-extract, remove)
- CLAW Compiler driver: the compiler driver that glue together all pieces together for the full workflow.