CompilerGym v0.2.4
This release adds a new compiler environment, new APIs, and a suite of backend improvements to improve the flexibility of CompilerGym environments. Many thanks to code contributors: @sogartar, @KyleHerndon, @SoumyajitKarmakar, @uduse, and @anthony0727!
Highlights of this release include:
- [mlir] Began work on a new environment for matrix multiplication using MLIR (#652, thanks @KyleHerndon and @sogartar!). Note this environment is not yet included in the pypi package and must be compiled from source.
- [llvm] Added a new
env.benchmark_from_clang_invocation()method (#577) that can be used for constructing LLVM environment automatically from C/C++ compiler invocations. This makes it much easier to integrate CompilerGym with your existing build scripts. - Added three new wrapper classes:
Counter, that provides op counts for analysis (#683);SynchronousSqliteLogger, that provides logging of environment interactions to a relational database (#679), andForkOnStepthat provides anundo()operation (#682). - Added
reward_spaceandobservation_spaceparameters toenv.reset()(#659, thanks @SoumyajitKarmakar!)
This release includes a number of improvements to the backend APIs that make it easier to write new CompilerGym environments:
- Refactored the backend to make
CompilerEnvan abstract interface, andClientServiceCompilerEnvthe concrete implementation of this interface. This enables new environments to be implemented without using gRPC (#633, thanks @sogartar!). - Extended the support for different types of action and observation spaces (#641, #643, thanks @sogartar!), including new
PermutationandSpaceSequencespaces (#645, thanks @sogartar!).. - Added a new
disk/subdirectory to compiler service's working directories, which is symlinked to an on-disk location for devices which support in-memory working directories. This fixes a bug with leftover temporary directories from LLVM (#672).
This release also includes numerous bug fixes and improvements, many of which were reported or fixed by the community. For example, fixing a bug in cache file locations (#656, thanks @uduse!), and a missing flag definition in example code (#684, thanks @anthony0727!).