Bot releases are visible (Hide)
Published by Axel-Naumann 5 months ago
Vc is an open source library to ease explicit vectorization of C++ code. It has an intuitive API and provides portability between different compilers and compiler versions as well as portability between different vector instruction sets.
Vc 1.4.5 is a bugfix release most notably incorporating fixes for current compiler versions.
Full Changelog: https://github.com/VcDevel/Vc/compare/1.4.4...1.4.5
Vc is an open source library to ease explicit vectorization of C++ code. It has an intuitive API and provides portability between different compilers and compiler versions as well as portability between different vector instruction sets.
Vc 1.4.4 is a bugfix release most notably incorporating fixes for current compiler versions.
Full Changelog: https://github.com/VcDevel/Vc/compare/1.4.3...1.4.4
Published by Axel-Naumann over 2 years ago
Vc is an open source library to ease explicit vectorization of C++ code. It has an intuitive API and provides portability between different compilers and compiler versions as well as portability between different vector instruction sets.
Vc 1.4.3 is a bugfix release most notably incorporating fixes for current compiler versions.
Full Changelog: https://github.com/VcDevel/Vc/compare/1.4.2...1.4.3
Published by Axel-Naumann over 3 years ago
Vc is an open source library to ease explicit vectorization of C++ code. It has an intuitive API and provides portability between different compilers and compiler versions as well as portability between different vector instruction sets.
Vc 1.4.2 is a bugfix release most notably incorporating fixes for current compiler versions.
description | |
---|---|
Fixed a warning from cmake. (see #276) | |
Added a missing include for GCC11. (see #275) | |
Fixed a compilation error with MSVC. (see #272, #277) | |
Fixed a corner case in the unit tests. (see #262) | |
Fixed a warning in the unit tests. (see #261) | |
Fixed a unit test compilation error with clang. (see #260) | |
Removed the deprecated Vector<T, VectorAbi::Scalar>::reinterpretCast to fix a warning with GCC10. (see #254) |
|
Avoid potentially pessimizing std::move in return statements. (see #258) |
|
Avoid redefinition of bit_scan{forward,reverse} macros. (see #248 | |
Improved performance of simized random access containers. | |
Documentation and CI cleanup. (see #222, #223, #251, #259) |
Published by mattkretz almost 6 years ago
Vc is an open source library to ease explicit vectorization of C++ code. It has an intuitive API and provides portability between different compilers and compiler versions as well as portability between different vector instruction sets.
Vc 1.4.1 is a bugfix release most notably incorporating improved codegen on gathers with AVX2 available.
description | |
---|---|
Gather operations that required implicit multiplication of the index vector (because of gather into an array of structure) will now do a more efficient vector multiplication or, if possible, use a larger stride in the gather instruction to avoid the multiplication (see #214) | |
Internal code cleanup (removal of dead code) to hit fewer compilation corner cases/errors. | |
Buildsystem fixes for i686 and libmvec. |
Published by mattkretz about 6 years ago
Vc is an open source library to ease explicit vectorization of C++ code. It has an intuitive API and provides portability between different compilers and compiler versions as well as portability between different vector instruction sets.
Vc 1.4.0 is a minor feature release with subtle changes in the interface and the start of an upgrade path to std::experimental::simd
.
description | |
---|---|
Dropped all Intel MIC code. This was not AVX512, but the old KNC implementation. ICC 18 dropped support for the -mmic compile flag. Consequently, I removed the maintenance burden. |
|
Vc::simdize<T, N> (with arithmetic T and suitable N ) can now be an alias for Vc::Vector<T, Sse> , while AVX(2) is available. In Vc 1.3, this would use Vc::SimdArray<T, N> instead. |
|
Fixed conversions from Vc::Vector<T> to Vc::SimdArray<U, Vc::Vector<T>::size()> to be implicit (as the documentation always said). |
|
Added Vc::simd<T, Abi> alias that resolves to the corresponding Vc::Vector or Vc::SimdArray type. Most importantly Vc::simd<T, Vc::simd_abi::fixed_size<N>> (alias: Vc::fixed_size_simd<T, N> ) will give you (almost) Vc::SimdArray<T, N> . Note that this simd type does not implement the exact same interface as defined in the Parallelism TS v2. Most SimdArray operations return fixed_size_simd now, thus potentially breaking existing code (e.g. by breaking template argument deduction). |
|
Added load_interleaved and store_interleaved to be used with Vc::simdize<T> objects. This enables optimized loads from / stores to an AoS (array of structure) layout into/from struct s of Vc vectors. This is currently only optimized for structures T where all data members have equal sizeof . |
|
Added a new constructor to simdized types: Vc::simdize<T>([](size_t n) { ... }) expects the lambda to return objects of type T , which will be placed at the corresponding index n in the resulting object. |
|
Vc::simd_for_each and Vc::simd_for_each_n will now vectorize any value_type via Vc::simdize . In Vc 1.3, only arithmetic types were vectorized, everything else used a fall-back to std::for_each . This fallback is removed in Vc 1.4. Consequently, the value_type must work with Vc::simdize . |
|
The sin , cos , and sincos functions now have increased precision at the cost of lower performance (with AVX2, you still get a speedup of ~8 over std::sin and std::cos ). There's an option to use libmvec for Vc::sin and Vc::cos , which gives even higher performance for SSE4 and AVX2, but less performance for targets without SSE4 or just AVX. |
|
Modernize CMake to simplify usage of Vc in external projects via exported target. | |
Binary operators are now stricter in the implicit conversions they allow. E.g. simd<int>(0) == 0l is now ill-formed. Because it would require a silent (potentially) narrowing conversion of the right hand side. |
Published by mattkretz almost 7 years ago
Vc is an open source library to ease explicit vectorization of C++ code. It has an intuitive API and provides portability between different compilers and compiler versions as well as portability between different vector instruction sets.
Vc 1.3.3 is a minor bug fix release.
Scalar
ABI)is_simd_vector
and is_simd_mask
traits to consider the ElementType
too. Thanks to Kay F. Jahnke.Published by mattkretz over 7 years ago
Vc is an open source library to ease explicit vectorization of C++ code. It has an intuitive API and provides portability between different compilers and compiler versions as well as portability between different vector instruction sets.
Vc 1.3.2 is a small bug fix release.
Published by mattkretz over 7 years ago
Vc is an open source library to ease explicit vectorization of C++ code. It has an intuitive API and provides portability between different compilers and compiler versions as well as portability between different vector instruction sets.
Vc 1.3.1 contains bug fixes, enables swap
on scalar subscripts, and resolves a licensing issue in the examples.
swap(v[i], v[j])
did not compile. Vc 1.3.1 overloads the swap
function and thus enables swapping scalars into/out of vector and mask objects.Published by mattkretz almost 8 years ago
Vc is an open source library to ease explicit vectorization of C++ code. It has an intuitive API and provides portability between different compilers and compiler versions as well as portability between different vector instruction sets.
Vc 1.3.0 contains API cleanups, bug fixes, important compiler-specific optimizations & workarounds, and finally supports MSVC again
Vector
and Mask
. There is a minor source compatibility break involved, since Vector::operator[]
returned lvalue references before Vc 1.3 and returns a smart reference (rvalue) now. This change reduces the chance of miscompilation & internal compiler errors and reduces the reliance on non-standard C++ extensions.x32
compilation (like x86_64 but with 32-bit pointers).SimdArray
(thanks to Kay Jahnke).simd_cast
properly works with ADL now (i.e. you don't have to write fully qualified Vc::simd_cast
anymore).simd_for_each_n
(thanks to Hartmut Kaiser).Published by mattkretz over 8 years ago
Vc 1.2.0 contains API cleanups and bug fixes.
SimdArray<T, N>
Vector<T>
and SimdArray<T, N>
binary operators for more correctness and to follow the latest proposal to the C++ standards committeesimd_for_each
Published by mattkretz almost 9 years ago
The Vc 1.1.0 resolves several important issues that remained or were found in Vc 1.0.0.
Vector
for SimdArray
.iif
to work for builtin types.Vector
to restore API compatiblity with Vc 0.7. These functions are all marked as deprecated, suggesting to use the new subscript operators instead. This should ease porting applications from Vc 0.7.Vector::copySign
, Vector::isNegative
, and Vector::exponent
. They are replaced by their non-member counterparts Vc::copysign
, Vc::isnegative
, and Vc::exponent
.Vc::array
with a fork from libc++ instead of the previous code that was forked from libstdc++.Published by mattkretz almost 9 years ago
(u)int_v
is now only one SSE width instead of the full AVX width.(u)int_v
and (u)short_v
.(u)int_v::size() == float_v::size()
. Therefore, thesimd_cast<T>
cast function. It allows arbitrary conversions from one orsimdize<T>
expression "vectorizes T". This is still somewhatsfloat_v
is gone in favor of a generic SimdArray<T, N>
class template allowing you to build vector objects of arbitrary width. Thus, to get the old sfloat_v
type back you'd writeusing sfloat_v = Vc::SimdArray<float, Vc::short_v::size()>;
.SimdArray
is not meant to be used as a container, i.e. N should be "small".Vc::Vector<T>
you can also now use microarchitectureVc::SSE::Vector<T>
. This enables you to use SSESimdArray<T, N>
in most cases, though.Vector<T>
class template was defined multiple times inVc::Vector<T, Abi>
withtemplate <typename T, typename Abi> void f(Vc::Vector<T, Abi> x)
,Vc::vector
and/or Vc::array
as alternatives to std::vector
andstd::array
to get an additional subscript overload accepting Vc::Vector
Published by mattkretz about 9 years ago