manodeep / Corrfunc

⚡️⚡️⚡️Blazing fast correlation functions on the CPU.
https://corrfunc.readthedocs.io
MIT License
163 stars 50 forks source link

Compile failure on KNL #183

Open manodeep opened 5 years ago

manodeep commented 5 years ago

General information

Issue description

Compilation failure with both gcc (tested with 6.4.0, 7.3.0) and icc with an error message.

Expected behavior

Code should compile on KNL

Actual behavior

Compile failure with the following error message (gcc7.3.0)

gcc -DDOUBLE_PREC  -DVERSION=\"2.3.0\" -DUSE_UNICODE -std=c99 -m64 -g -Wsign-compare -Wall -Wextra -Wshadow -Wunused -fPIC -D_POSIX_SOURCE=200809L -D_GNU_SOURCE -D_DARWIN_C_SOURCE -O3  -ftree-vectorize -funroll-loops -fprefetch-loop-arrays --param simultaneous-prefetches=4  -fopenmp -funroll-loops -march=native -fno-strict-aliasing -Wformat=2  -Wpacked  -Wnested-externs -Wpointer-arith  -Wredundant-decls  -Wfloat-equal -Wcast-qual -Wcast-align -Wmissing-declarations -Wmissing-prototypes  -Wnested-externs -Wstrict-prototypes   -Wno-unused-local-typedefs  -I../../io -I../../utils  -c countpairs_wp_impl_double.c -o countpairs_wp_impl_double.o
In file included from /apps/knl/software/core/gcccore/7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/immintrin.h:43:0,
             from ../../utils/avx512_calls.h:16,
             from ../../utils/weight_functions_double.h:12,
             from wp_kernels_double.c:22,
             from countpairs_wp_impl_double.c:23:
/apps/knl/software/core/gcccore/7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/avx2intrin.h: In function 'wp_avx512_intrinsics_double':
/apps/knl/software/core/gcccore/7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/avx2intrin.h:973:20: error: the last argument must be an 8-bit immediate
   return (__m256i) __builtin_ia32_pblendd256 ((__v8si)__X,
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        (__v8si)__Y,
        ~~~~~~~~~~~~
        __M);
        ~~~~     
make: *** [countpairs_wp_impl_double.o] Error 1

What have you tried so far?

Nothing yet. Initial searching has not lead to any obvious solution. I suspect that the error occurs on KNL because AVX512VL is not supported (unlike Skylake cpus where there is AVX512VL support)

Minimal failing example

The following steps should be sufficient to reproduce the problem: