From d4fe0192d674ac7b1fb044c1fc2cb1060ed084fe Mon Sep 17 00:00:00 2001 From: Robert Knight Date: Mon, 22 Jan 2024 21:47:55 +0000 Subject: [PATCH] Update change log for next release --- CHANGELOG.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1210e4f9..d5f17f5a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,47 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.3.0] - Unreleased + +### Breaking changes + +The static and dynamic tensor types (`NdTensorBase`, `TensorBase`) have been +unified into a single implementation. Most code uses these via type aliases +(`NdTensor`, `Tensor` etc.), which remain the same. However there have been some +API changes as a result: + + - The `View` and `NdView` traits were combined into `AsView`. The recommended + way to import this trait is via the prelude (`use rten_tensor::prelude::*`) + + - Some inherent methods of `TensorBase` moved to the `AsView` trait. You may + need to add additional imports of this trait or the prelude. + + - `NdTensor::from_data` now has the same API signature as `Tensor::from_data`. + This means the order of arguments is reversed compared to before. It is now + `from_data(shape, data)`. Creating tensors with custom strides is now done + via `from_data_with_strides` or `from_slice_with_strides`. + + - Tensor methods for broadcasting and reshaping tensors now determine the rank + of the result from the type of the shape argument. If passed an array, they + return a static-rank view. If passed a slice, they return a dynamic-rank + view. + + - Methods that insert, remove or swap axes now have an `_axis` suffix (eg. + `move_axis`). Previously some of these methods had a `_dim` suffix. + + - The `slice` method now always returns a static rank view. Usage is + `tensor.slice::(range)` where `M` is the rank of the result. To create + a view with a dynamic dimension count, use `tensor.slice_dyn(range)` instead. + +## Other changes + + - Optimized index iteration for tensors (d3fd3c9) + - Optimized col2im transform used by ConvTranspose (fbc541b) + - Optimized depthwise convolution (20e83e8) + - Improved performance on Arm via a better optimized GEMM kernel + ([#32](https://github.com/robertknight/rten/pull/32)) and vectorized kernels + for other functions ([#31](https://github.com/robertknight/rten/pull/31)). + ## [0.2.0] - 2024-01-03 - Improved inference performance on ARM [#30](https://github.com/robertknight/rten/pull/30)