Fastor V0.6.3
Fastor V0.6.3 is another incremental change over V0.6 release that introduced a significant overhaul in Fastor's internal design and exposed API. This release includes mainly internal changes
New features and improvements
- Continuous integration support via Travis CI on Linux. We test against
GCC-5
toGCC-latest
and defaultClang
using both scalar and SIMD implementations - Continuous integration support via Appveyor CI for MSVC builds on Windows. We test against Visual Studio 2019 under debug for now. Our test cases take excessively long under release and eventually time out although they build fine
- Unit test are now built using CMake instead of raw Makefiles
lut_inverse
andut_inverse
have been renamed totinverse
takingUpLoType
similar to linear algebra computation types #87- Single tensor expression
einsum
for inner and permuted inner product of a single tensor expression #80 - Explicit
einsum
by allowing the user to specify the shape of the tensor contraction output.einsum
now can permute and can deal with inner and permuted inner products of tensors and tensor expressions #91 - A new
permute
function that closely resembles NumPy'spermute
option and implements contiguous writes (instead of contiguous reads) which results in about 15-20% performance improvement. This function is not identical topermutation
- All remaining mathematical functions are now implemented -
cbrt
,exp2/expm1
,log10/log2/log1p
,asinh/acosh/atanh/atan2
,erf/lgamma/tgamma/hypot
,round/floor/ceil
,min/max
etc. Where applicable SIMD versions of these are implemented. The SIMD math layer has been cleaned up and reworked - Element-wise unary boolean operators
!(Expression)
,isinf(Expression)
,isnan(Expression)
andisfinite(Expression)
are implemented #90 - Element-wise binary math function
min(a,b)/max(a,b)
,pow/hypot/atan2
are now available - Fastor now uses
alignas
instead of compiler specific macros for memory alignment #98 - Fastor specific and user controllable macros are now moved to
config.h
andmacros.h
underconfig
folder previously namedcommons
#58
Bug fixes
- Bug fix in expression binding policy that resulted in segfaults #95
- Fix for assigning
cv
-qualifiedTensorMap
toTensor
#94 by @feltech - Detect the correct SIMD type for
cv
-qualified tensors #99 - Bug fix for nested boolean expressions such as
!isfinite(Expression)
or!(a>b)
#93 - Fix overflow in boolean views #100
- Fix detecting the correct language standard under MSVC 7592ea7
- Fix regression in abstract permutation #96