Releases: gorgonia/tensor
Bugfix release: Ltoi() had old logic
previous versions of At(...)
and SetAt(...)
failed when given a row vec. This was due to an older definition of vectors. That definition had been replaced with more semantically valid types (i.e. row vec and colvec), and so the Ltoi()
function which powers that also needs to change.
Bugfix: API did not respect Dtypes when performing scalar operations
There was a bug in the previous version where XXXScalar()
functions would still work if the scalar passed in is of a different type. This has now been fixed.
h/t to @dcu for discovering it.
Introduction of a `Vectorlike` shape + other fixes
In this release, a Vectorlike()
method is added to Shape
and AP
which informs if a tensor is vector-like. This then allows for better and more correct iterations via iterators. h/t to @strigi-form for finding the problem and then fixing it.
Furthermore, the unnecessary additions array2
and rawdata
are now removed. This was enforced by Go 1.15.
Fixed gomod issue
Earlier release had a mistake in the go.mod file. This has now been fixed
Complex numbers are now supported for linear algebra operations; Apache Arrow
MatMul
, MatVecMul
, Inner
, Outer
now supports complex numbers in the matrices.
Inner
and Outer
uses the universal definition, as opposed to performing the complex conjugate inner dot product and outer products.
Furthermore, interop with Apache Arrow has been made possible by @poopoothegorilla . Great job Jim
NOTE: there is a go.mod issue with this release. Use v0.9.11 instead.
Minor Bugfix - Stepping of ndarrays
Thanks to @cpllbstr a subtle bug with stepping while slicing had been found and fixed.
Some bugfixes and compiler correctness
Operations with scalars are now more deterministic. Thanks to @wzzhu and @bezineb5 for contributing the phenomenal patch. Also thanks to @jlauinger for fixing potentially incorrect construction of the internal data types.
Some performance updates and bugfixes
v0.9.6 saw some updates to the Repeat
operation. This release fixes some performance hits that the Repeat
operation had, by adding fast path updates to special, common cases.
Furthermore some bugs were fixed
- iterator use check- where a check used to be made to see if there both
a
andb
have the same data order (i.e. C-ordered tensors can interact nicely with other C-ordered tensors without needing iterators, but if it interacts with a Fortran-ordered tensor, then an iterator is required). This check was wrong, and has been fixed. - a potential unsafe slice casting was also fixed by @jlauinger . Previously if a GC run is called in the middle of a
AsByteSlices()
, then the allocated[]byte
would have been collected before it returned. This has been fixed.
Repeat received some optimization
Breaking Changes:
- The
Repeater
interface has now been changed. Specifically, aRepeater
now also has a methodRepeatReuse
.
What Changed:
Repeat
andRepeat
reuse has some optimizations done on it.- Some performance improvements.
Internally, a new type array2
has been created. array2
is a type that can never be allocated on the heap. The purpose of array2
is to facilitate operations with a lot of transient arrays (i.e. slicing operations). Because each array
causes runtime.newobject
to be called, array2
was created. By guaranteeing that array2
will only ever live on the stack, the gc pauses triggered by runtime.mallocgc
is lessened, thus giving greater performance.
Fixed a bug where engines were not properly propagated in operations
Now all operations have the engines properly propagated.