Fastor - C++11/14/17 中的轻量级高性能SIMD优化张量代数框架
A light-weight high performance SIMD optimised tensor algebra framework in C++11/14/17
V0.4
romeric released this
This release brings new features, improvements and bug fixes to Fastor:
- Lots of changes to support MSVC. Thanks to @FabienPean.
- Permutation and einsum functions for generic tensor expressions.
- A
TensorRef
class that wraps over existing data and exposes Fastor's functionality over raw data. - Some more tensor functions can work on tensor expressions.
- Tensor functions for high order tensors operating on the last two indices (NumPy style operations).
- More variants of tensor cross product are now available for high order tensors.
- Bug fixes in backend trace and transpose.
- Bug fix in ordering of tensor networks.
- Bug fix in computing cost models.
and much more!
Assets
2
热门度与活跃度
0.4
10.0
Watchers：11 |
Star：124 |
Fork：12 |
创建时间： 2016-05-24 09:40:32 |
最后Commits： 前天 |
许可协议：MIT |
fc10629
Compare
romeric released this
Mar 20, 2020
· 11 commits to master since this release
Fastor V0.5 is one hell of a release as it brings a lot of new features, fundamental performance improvements, improved flexibility working with Tensors and many bug fixes:
New Features
SingleValueTensor
for tensors of any size and dimension that have all their values the same. It is extremely space efficient as it stores a single value under the hood. It provides a much more optimised route for certain linear algebra functions. For instance matmul of aTensor
andSingleValueTensor
is O(n) and transpose is O(1)teval
andteval_s
that provide fast evaluation of higher order tensorscast
method to cast a tensor to a tensor of different data typeget_mem_index
andget_flat_index
to generalise indexing across all tensor classes. Eval methods now use theseTensor(external_data,ColumnMajor)
tocolumnmajor
andtorowmajor
free functionsall_of
,any_of
andnone_of
free function reducers that work boolean expressionsnoalias
featureFASTOR_IF_CONSTEXPR
macro for C++17Perforamance and other key improvements
Tensor
class can now be treated as a compile time type as it can be initialised as constexpr by defining the macroFASTOR_ZERO_INITIALISE
CONTRACT_OPT
is no longer necessaryBLAS_SWITCH_MATRIX_SIZE_S
for square matrices andBLAS_SWITCH_MATRIX_SIZE_NS
for non-square matrices. Default sizes are 16 and 13 respectively. libxsmm brings substantial improvement for bigger size matricesFASTOR_ASSERT
is now a macro toassert
which optimises better at releasedeterminant
for 4x4 cases. Determinant now works on all types and not just float and doubleall
is now an alias tofall
which means many tensor view expressions can now be dispatched to tensor fixed views. The implication of this is that expressions likea(all)
andA(all,all)
can just return the underlying tensor as opposed to creating a view with unnecessary sequences and offsets. This is much fasterTensorMap
class to behave exactly the same asTensor
class including views, block indexing and so onTensor
related methods and functionalities have been separated in to separate files that are now usable by other tensor type classesBug fixes
product
method of Tensor class (99e3ff0)Key changes
#include <Fastor/Fastor.h>
TensorRef
class has now been renamed toTensorMap
There is a lot more major and minor undocumented changes.