Open
Description
General information
- Corrfunc version: 2.3.0
- platform: linux
- installation method (pip/source/other?): source
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:
- login to a
KNL
machine - git clone https://github.com/manodeep/Corrfunc
- module load <gcc/icc, gsl>
- make