News

Vc 0.7.4 Released

Added by Matthias Kretz almost 3 years ago

Summary of the changes in Vc 0.7.4:
  • fixed several compile errors / warnings with newer or old C++ compilers
  • support clean compilation with more -W flags
  • fixed compilation when compiling without optimization
  • added operator-- to Vector<T>
  • Copying Memory now uses SIMD move instructions
  • Vc::Allocator<T> now uses a minimum alignment of the SIMD types of the chosen Vc implementation. Thus making it useable for containers of builtin types.

Download:
Vc-0.7.4.tar.gz

Vc 0.7.3 Released

Added by Matthias Kretz over 3 years ago

Summary of the changes in Vc 0.7.3:
  • more thorough feature tests in the cmake scripts (-mfma / -stdlib=libc++)
  • work around bogus warnings (mostly clang)
  • fixed binary operators of Mask types
  • fixed ifdef logic that lead to ICC not seeing the always_inline attributes
  • support for Intel Family 6 Model 47 CPU detection
  • fixed Vc/IO for libc++ and GCC on Windows
  • fixed a compilation error in Vc::Scalar::abs
  • fixed Vc::Scalar::sincos to use a safe fallback and ::sincos(f) on with glibc

Download:
Vc-0.7.3.tar.gz

Vc 0.7.2 Released

Added by Matthias Kretz almost 4 years ago

Summary of the changes in Vc 0.7.2:
  • Improved documentation
  • Detect and support AMD Piledriver CPUs (prefers FMA over FMA4)
  • Support clang with libc++
  • More workarounds for compiler quirks
  • Bugs fixed:
    • Fixed VectorTuple to work without using namespace Vc.
    • SSE::sfloat_m::operator!= was broken.
    • SSE::sfloat_m::isMix was broken.
    • Buildsystem: Detection of CPU flags was broken on Linux
    • Fixed compilation for targets that don't support POPCNT.
    • Fixed debug builds that use log(-1). It returns NaN instead of asserting now.
    • No warning for nested foreach_bit loops anymore

Download:
Vc-0.7.2.tar.gz

Trigonometric functions in Vc and VDT

Added by Matthias Kretz about 4 years ago

Some people might have noticed that there is a project called VDT, which implements the same algorithms for sine, cosine, and friends as does Vc. The difference is that Vc implements the functions only for float_v and double_v, whereas VDT only defines float and double implementations. Still the algorithms are the same. So on Tuesday afternoon Danilo and I sat down at CERN for a chat about merging those efforts. And I'm very happy to announce that we'll work towards merging those efforts.

The plan is to have exactly one implementation of the algorithms that can work for float, double, float_v, and double_v. This will hopefully increase the quality and visibility for both projects. VDT should not get a dependency on Vc, though. VDT is perfectly usable and interesting without Vc - so that makes sense. Vc, on the other hand, can incorporate VDT releases into its own releases to provide the necessary implementations for math functions. There are still many open details, but the plan is solid. So, yay for more collaboration and efficient code sharing!

Vc 0.7.1 Released

Added by Matthias Kretz about 4 years ago

Summary of the changes in Vc 0.7.1:
  • MSVC support: workaround bugs in MSVC; AVX is still mostly miscompiled by MSVC, but Vc::SSE works fine now
  • GCC on Windows support
  • improved support for old GCC versions
  • speed and FMA4 improvements to trigonometric functions
  • fixed a few inconsistencies

Download:
Vc-0.7.1.tar.gz

Vc 0.7.0 Released

Added by Matthias Kretz about 4 years ago

Vc 0.7.0 is ready. This release has seen major polishing, making it more intuitive and portable than any previous Vc release.

The compiler support was greatly improved:
  • GCC from version 4.1 on can compile Vc
  • clang 3.2
  • ICC 13.x
  • MSVC 2010 and 2012 are nearly fully supported. Full support is targeted for Vc 0.7.1.

The trigonometric functions have been reworked, leading to much higher precision. This came at the cost of speed. Vc 0.8 will look at more improvements and compromises in this area.

A major feature in 0.7 is the way operators are implemented. The Vc types now follow the C/C++ standards much closer how types implicitly convert when two different types are used with an operator. Examples for builtin types:

int * unsigned int -> unsigned int
float * int -> float
float * double -> double

Vc was too picky before 0.7 and OTOH did some implicit conversions that could lead to unexpected results. For example int_v * float would lead to the float getting converted to int_v instead of the int_v getting converted to float_v and the float broadcast to another float_v. I.e. old behavior:

int_v * float_v      -> error
int_v * float        -> int_v
int_v * uint_v       -> error
int_v * unsigned int -> int_v
float_v * double     -> float_v

The new behavior is now consistent with the behavior of builtin types - or stricter because different vector sizes do not combine
int_v * float_v      -> float_v
int_v * float        -> float_v
int_v * uint_v       -> uint_v
int_v * unsigned int -> uint_v
float_v * double     -> error (correct would be double_v, but that can't work because float_v::Size != double_v::Size)

Download:
Vc-0.7.0.tar.gz

Vc 0.7.0 RC Released

Added by Matthias Kretz about 4 years ago

This is the first, and hopefully only, release candidate for Vc 0.7.0. This release has seen major polishing, making it more intuitive and portable than any previous Vc release.

The compiler support was greatly improved:
  • GCC from version 4.1 on can compile Vc
  • clang 3.2
  • ICC 13.x
  • MSVC 2010 and 2012 are nearly fully supported. Full support is targeted for Vc 0.7.1.

The trigonometric functions have been reworked, leading to much higher precision. This came at the cost of speed. Vc 0.8 will look at more compromises in this area.

A major feature in 0.7 is the way operators are implemented. The Vc types now follow the C/C++ standards much closer how types implicitly convert when two different types are used with an operator. Examples for builtin types:

int * unsigned int -> unsigned int
float * int -> float
float * double -> double

Vc was too picky before 0.7 and OTOH did some implicit conversions that could lead to unexpected results. For example int_v * float would lead to the float getting converted to int_v instead of the int_v getting converted to float_v and the float broadcast to another float_v. I.e. old behavior:

int_v * float_v      -> error
int_v * float        -> int_v
int_v * uint_v       -> error
int_v * unsigned int -> int_v
float_v * double     -> float_v

The new behavior is now consistent with the behavior of builtin types - or stricter because different vector sizes do not combine
int_v * float_v      -> float_v
int_v * float        -> float_v
int_v * uint_v       -> uint_v
int_v * unsigned int -> uint_v
float_v * double     -> error (correct would be double_v, but that can't work because float_v::Size != double_v::Size)

Download:
Vc-0.6.95.tar.gz

The road to Vc 0.7

Added by Matthias Kretz about 4 years ago

With the latest Krita release depending on the development version of Vc, packagers have been asking for a release. And since I have not been able to follow my plan of release often (the "early" part worked...), I take that as a good reason to finally make a cut and move todo items to the next version.

One major issue for Vc 0.7 was the full support for more compilers. For Vc 0.7.0 I will thus skip full MSVC support. It will be good enough for most users, but a few unit tests are still failing. I hope to be able to get this fixed soon and release a Vc 0.7.1 then.

Expect to see a Vc 0.7 release candidate any time now.

Vc 0.6.1 Released

Added by Matthias Kretz almost 5 years ago

A first bugfix release for Vc 0.6 is available. The following issues have been solved:
  • compile errors related to incompatible intrinsics API
  • bug in a unit test
  • improved documentation
  • workaround for GCC bug 52736
  • -fno-predictive-commoning for GCC 4.7.0 to work around miscompilations
  • work around GCC 4.6.0's incorrect vmovq usage
  • more compile errors fixed

Download:
Vc-0.6.1.tar.gz

Vc Dashboard upgraded

Added by Matthias Kretz about 5 years ago

I just upgraded CDash to 2.0.2 and reset the complete database. All recent dashboard submissions where somehow broken. Finally the dashboard and the CTest submissions are working correctly again.

Feel free to set up nightly or even continuous builds yourself. Most appreciated would be builds with ICC, builds with out-of-the-box compilers on a great variety of Linux distris, and Windows builds! Contact me via mail or on IRC if you need help.

1 2 Next »

Also available in: Atom