Cannot compile blaze headers on Intel Skylake nodes

Issue #205 resolved
Maximilian Bremer created an issue

Commit: d518c7ccf5f645740a168163e707a9075acd943e

g++ Version: 7.1.0

Compiling an empty main, which includes some headers (blaze_mwe.cpp is attached) on the Stampede2 Skylake partition

g++ -I$WORK/dgswemv2_install_Release_stampede2-skx/include -march=native blaze_mwe.cpp

produces the following error

c506-053[skx](1146)$ g++ -std=c++14 -g -march=native -O3 -o main.o -I/work/02578/bremer/stampede2/dgswemv2_install_Release_stampede2-skx/include/ main.cpp
In file included from /work/02578/bremer/stampede2/dgswemv2_install_Release_stampede2-skx/include/blaze/math/simd/Functions.h:83:0,
                 from /work/02578/bremer/stampede2/dgswemv2_install_Release_stampede2-skx/include/blaze/math/SIMD.h:45,
                 from /work/02578/bremer/stampede2/dgswemv2_install_Release_stampede2-skx/include/blaze/math/dense/DenseIterator.h:35,
                 from /work/02578/bremer/stampede2/dgswemv2_install_Release_stampede2-skx/include/blaze/math/dense/StaticVector.h:49,
                 from /work/02578/bremer/stampede2/dgswemv2_install_Release_stampede2-skx/include/blaze/math/CompressedVector.h:43,
                 from /work/02578/bremer/stampede2/dgswemv2_install_Release_stampede2-skx/include/blaze/math/CompressedMatrix.h:46,
                 from /work/02578/bremer/stampede2/dgswemv2_install_Release_stampede2-skx/include/blaze/Math.h:48,
                 from main.cpp:1:
/work/02578/bremer/stampede2/dgswemv2_install_Release_stampede2-skx/include/blaze/math/simd/Sign.h: In function blaze::SIMDint8 blaze::sign(const blaze::SIMDint8&)’:
/work/02578/bremer/stampede2/dgswemv2_install_Release_stampede2-skx/include/blaze/math/simd/Sign.h:72:27: error: _mm512_setzero_epi8 was not declared in this scope
    const __m512i   zero ( _mm512_setzero_epi8() );
                           ^~~~~~~~~~~~~~~~~~~
/work/02578/bremer/stampede2/dgswemv2_install_Release_stampede2-skx/include/blaze/math/simd/Sign.h:72:27: note: suggested alternative: _mm512_setzero_epi32
    const __m512i   zero ( _mm512_setzero_epi8() );
                           ^~~~~~~~~~~~~~~~~~~
                           _mm512_setzero_epi32
/work/02578/bremer/stampede2/dgswemv2_install_Release_stampede2-skx/include/blaze/math/simd/Sign.h: In function blaze::SIMDint16 blaze::sign(const blaze::SIMDint16&)’:
/work/02578/bremer/stampede2/dgswemv2_install_Release_stampede2-skx/include/blaze/math/simd/Sign.h:115:27: error: _mm512_setzero_epi16 was not declared in this scope
    const __m512i   zero ( _mm512_setzero_epi16() );
                           ^~~~~~~~~~~~~~~~~~~~
/work/02578/bremer/stampede2/dgswemv2_install_Release_stampede2-skx/include/blaze/math/simd/Sign.h:115:27: note: suggested alternative: _mm512_setzero_epi32
    const __m512i   zero ( _mm512_setzero_epi16() );
                           ^~~~~~~~~~~~~~~~~~~~
                           _mm512_setzero_epi32

Please advise on how to proceed. Thanks!

Just in case, you're curious here are the -march=native flags:

c506-024[skx](1032)$ echo | gcc -### -E - -march=native 
Using built-in specs.
COLLECT_GCC=gcc
Target: x86_64-pc-linux-gnu
Configured with: /admin/build/rpms/BUILD/gcc-7.1.0/configure --enable-libssp --enable-gold=yes --enable-ld=default --enable-plugins --enable-lto --with-tune=generic --enable-languages=c,c++,fortran --disable-multilib --prefix=/opt/apps/gcc/7.1.0 --with-gmp=/opt/apps/gcc/7.1.0 --with-mlgmp=/opt/apps/gcc/7.1.0 --with-mpfr=/opt/apps/gcc/7.1.0 --with-mpc=/opt/apps/gcc/7.1.0 --with-isl=/opt/apps/gcc/7.1.0
Thread model: posix
gcc version 7.1.0 (GCC) 
COLLECT_GCC_OPTIONS='-E' '-march=native'
 /opt/apps/gcc/7.1.0/libexec/gcc/x86_64-pc-linux-gnu/7.1.0/cc1 -E -quiet - "-march=knl" -mmmx -mno-3dnow -msse -msse2 -msse3 -mssse3 -mno-sse4a -mcx16 -msahf -mmovbe -maes -mno-sha -mpclmul -mpopcnt -mabm -mno-lwp -mfma -mno-fma4 -mno-xop -mbmi -mno-sgx -mbmi2 -mno-tbm -mavx -mavx2 -msse4.2 -msse4.1 -mlzcnt -mrtm -mhle -mrdrnd -mf16c -mfsgsbase -mrdseed -mprfchw -madx -mfxsr -mxsave -mxsaveopt -mavx512f -mno-avx512er -mavx512cd -mno-avx512pf -mno-prefetchwt1 -mclflushopt -mxsavec -mxsaves -mavx512dq -mavx512bw -mavx512vl -mno-avx512ifma -mno-avx512vbmi -mno-avx5124fmaps -mno-avx5124vnniw -mclwb -mno-mwaitx -mno-clzero -mno-pku -mno-rdpid --param "l1-cache-size=32" --param "l1-cache-line-size=64" --param "l2-cache-size=33792" "-mtune=generic"
COMPILER_PATH=/opt/apps/xalt/xalt/bin/:/opt/apps/gcc/7.1.0/libexec/gcc/x86_64-pc-linux-gnu/7.1.0/:/opt/apps/gcc/7.1.0/libexec/gcc/x86_64-pc-linux-gnu/7.1.0/:/opt/apps/gcc/7.1.0/libexec/gcc/x86_64-pc-linux-gnu/:/opt/apps/gcc/7.1.0/lib/gcc/x86_64-pc-linux-gnu/7.1.0/:/opt/apps/gcc/7.1.0/lib/gcc/x86_64-pc-linux-gnu/:/opt/apps/gcc/7.1.0/lib/gcc/x86_64-pc-linux-gnu/7.1.0/../../../../x86_64-pc-linux-gnu/bin/
LIBRARY_PATH=/opt/apps/gcc/7.1.0/lib/gcc/x86_64-pc-linux-gnu/7.1.0/:/opt/apps/gcc/7.1.0/lib/gcc/x86_64-pc-linux-gnu/7.1.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/opt/apps/gcc/7.1.0/lib/gcc/x86_64-pc-linux-gnu/7.1.0/../../../../x86_64-pc-linux-gnu/lib/:/opt/apps/gcc/7.1.0/lib/gcc/x86_64-pc-linux-gnu/7.1.0/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-E' '-march=native'

Comments (5)

  1. Klaus Iglberger

    Hi Maximilian!

    Thanks a lot for creating this issue. The problem is definitely on our side and we will provide a fix as quickly as possible. We apologize for the inconvenience and promise to fix the hole in our testing suite!

    Best regards

    Klaus!

  2. Klaus Iglberger

    Commit 1e02b4e provides a fix for the sign() functions for 8-bit and 16-bit integral data types using AVX-512BW. The fix is immediately available via cloning the Blaze repository and will be officially released in Blaze 3.5.

  3. Maximilian Bremer reporter

    Just pulled and rebuilt. Everything looks good on my end as well.

    Thanks for the quick turn around!

  4. Log in to comment