All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning:

  • Added for new features.

  • Changed for changes in existing functionality.

  • Deprecated for soon-to-be removed features.

  • Removed for now removed features.

  • Fixed for any bug fixes.

  • Security in case of vulnerabilities.

0.2.0 - 2020/10/20


  • Added more types of resistive devices: IdealResistiveDevice, LinearStep, SoftBounds, ExpStep, VectorUnitCell, TransferCompoundDevice, DifferenceUnitCell. (#14)

  • Added a new InferenceTile that supports basic hardware-aware training and inference using a statistical noise model that was fitted by real PCM devices. (#25)

  • Added a new AnalogSequential layer that can be used in place of Sequential for easier operation on children analog layers. (#34)


  • Specifying the tile configuration (resistive device and the rest of the properties) is now based on a new RPUConfig family of classes, that is passed as a rpu_config argument instead of resistive_device to Tiles and Layers. Please check the aihwkit.simulator.config module for more details. (#23)

  • The different analog tiles are now organized into a aihwkit.simulator.tiles package. The internal IndexedTiles have been removed, and the rest of previous top-level imports have been kept. (#29)


  • Improved package compatibility when using non-UTF8 encodings (version file, package description). (#13)

  • The build system can now detect and use openblas directly when using the conda-installable version. (#22)

  • When using analog layers as children of another module, the tiles are now correctly moved to CUDA if using AnalogSequential (or by the optimizer if using regular torch container modules). (#34)

0.1.0 - 2020/09/17


  • Initial public release.

  • Added rpucuda C++ simulator, exposed through a pybind interface.

  • Added a PyTorch AnalogLinear neural network model.

  • Added a PyTorch AnalogConv2d neural network model.