Skip to content

CompilerGym v0.2.4

Compare
Choose a tag to compare
@ChrisCummins ChrisCummins released this 25 May 17:26
· 262 commits to stable since this release
697d012

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), and ForkOnStep that provides an undo() operation (#682).
  • Added reward_space and observation_space parameters to env.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 CompilerEnv an abstract interface, and ClientServiceCompilerEnv the 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 Permutation and SpaceSequence spaces (#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!).