Vector Class Discussion

 
thread New version 1.14 supports AVX512 - Agner - 2014-07-24
last replythread New version 1.14 supports AVX512 - Peter Cordes - 2016-05-31
last reply New version 1.14 supports AVX512 - Agner - 2016-05-31
 
New version 1.14 supports AVX512
Author: Agner Date: 2014-07-24 05:20
The new version 1.14 of the vector class library supports the forthcoming AVX512 instruction set, which is expected to be available in Intel's Knights Landing coprocessor in 2015 and in ordinary CPU's in 2016. This doubles the maximum vector size to 512 bits for both integer and floating point vectors. Boolean vectors for use with the new 512-bit vectors are implemented in a new type of mask registers which are introduced with AVX512.

No CPU with AVX512 is available yet, so it has been tested with Intel's emulator. Compiling for AVX512 works with the newest Gnu and Intel compilers, but not yet with Microsoft and Clang compilers.

Version 1.14 of the vector class library also adds hyperbolic functions and a few other new features. See changelog.txt and the manual for details.

   
New version 1.14 supports AVX512
Author:  Date: 2016-05-31 18:28
Do you have any thoughts on changing types like Vec16cb into mask types when AVX512 is available? Does code using the VCL tend to depend on using the boolean-vector types as proper vectors?

For example,

static inline Vec16cb operator != (Vec16c const & a, Vec16c const & b)
could use __mmask16 _mm_cmpneq_epi8_mask (__m128i a, __m128i b), but we'd also have to expand that mask back to a vector. There's an instruction for that, but we *definitely* don't want to ever generate braindead code that keeps turning compare results into vectors and then back into masks.
   
New version 1.14 supports AVX512
Author: Agner Date: 2016-05-31 23:36
Peter Cordes wrote:
Do you have any thoughts on changing types like Vec16cb into mask types when AVX512 is available?
Unfortunately, Intel introduced a completely new register type just for masks in AVX512. This is the reason why I have made a separate vector type for masks. Conversion instructions are needed for conversion between masks and anything else.