Skip to content

Error when building ELPA with AVX512 #59

@mpijensen

Description

@mpijensen

Description
When building ELPA with '--enable-avx512' it fails.
The error reads
"error: cannot convert a value of type 'int' to vector type __vector(8) double' which has different size"
It seems to follow from "_XOR_EPI" being undefined (at least I cannot find it in the source).

How To Reproduce
Steps to reproduce the behavior:

  1. ELPA version: 2024.03.001
  2. Configure line:
    ./configure --enable-shared --disable-static --prefix=/ --bindir=${prefix}/bin --sbindir=${prefix}/bin --libdir=${prefix}/lib --includedir=${prefix}/include --oldincludedir=${prefix}/include --enable-libtool-lock --enable-openmp --with-threading-support-check-during-build=no --enable-avx512
  3. Build '
  4. See error
    ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c: In function 'hh_trafo_complex_kernel_24_AVX512_2hv_double': ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c:2574:37: warning: implicit declaration of function '_XOR_EPI' [-Wimplicit-function-declaration] 2574 | h1_real = (__SIMD_DATATYPE) _XOR_EPI((__m512i) h1_real, (__m512i) sign); | ^~~~~~~~ ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c:2574:9: error: cannot convert a value of type 'int' to vector type __vector(8) double' which has different size 2574 | h1_real = (__SIMD_DATATYPE) _XOR_EPI((__m512i) h1_real, (__m512i) sign); | ^~~~~~~ ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c:2575:9: error: cannot convert a value of type 'int' to vector type __vector(8) double' which has different size 2575 | h1_imag = (__SIMD_DATATYPE) _XOR_EPI((__m512i) h1_imag, (__m512i) sign); | ^~~~~~~ ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c: In function 'hh_trafo_complex_kernel_20_AVX512_2hv_double': ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c:4309:9: error: cannot convert a value of type 'int' to vector type __vector(8) double' which has different size 4309 | h1_real = (__SIMD_DATATYPE) _XOR_EPI((__m512i) h1_real, (__m512i) sign); | ^~~~~~~ ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c:4310:9: error: cannot convert a value of type 'int' to vector type __vector(8) double' which has different size 4310 | h1_imag = (__SIMD_DATATYPE) _XOR_EPI((__m512i) h1_imag, (__m512i) sign); | ^~~~~~~ ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c: In function 'hh_trafo_complex_kernel_16_AVX512_2hv_double': ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c:5850:9: error: cannot convert a value of type 'int' to vector type __vector(8) double' which has different size 5850 | h1_real = (__SIMD_DATATYPE) _XOR_EPI((__m512i) h1_real, (__m512i) sign); | ^~~~~~~ ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c:5851:9: error: cannot convert a value of type 'int' to vector type __vector(8) double' which has different size 5851 | h1_imag = (__SIMD_DATATYPE) _XOR_EPI((__m512i) h1_imag, (__m512i) sign); | ^~~~~~~ ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c: In function 'hh_trafo_complex_kernel_12_AVX512_2hv_double': ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c:7221:9: error: cannot convert a value of type 'int' to vector type __vector(8) double' which has different size 7221 | h1_real = (__SIMD_DATATYPE) _XOR_EPI((__m512i) h1_real, (__m512i) sign); | ^~~~~~~ ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c:7222:9: error: cannot convert a value of type 'int' to vector type __vector(8) double' which has different size 7222 | h1_imag = (__SIMD_DATATYPE) _XOR_EPI((__m512i) h1_imag, (__m512i) sign); | ^~~~~~~ ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c: In function 'hh_trafo_complex_kernel_8_AVX512_2hv_double': ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c:8411:9: error: cannot convert a value of type 'int' to vector type __vector(8) double' which has different size 8411 | h1_real = (__SIMD_DATATYPE) _XOR_EPI((__m512i) h1_real, (__m512i) sign); | ^~~~~~~ ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c:8412:9: error: cannot convert a value of type 'int' to vector type __vector(8) double' which has different size 8412 | h1_imag = (__SIMD_DATATYPE) _XOR_EPI((__m512i) h1_imag, (__m512i) sign); | ^~~~~~~ ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c: In function 'hh_trafo_complex_kernel_4_AVX512_2hv_double': ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c:9426:9: error: cannot convert a value of type 'int' to vector type __vector(8) double' which has different size 9426 | h1_real = (__SIMD_DATATYPE) _XOR_EPI((__m512i) h1_real, (__m512i) sign); | ^~~~~~~ ./src/elpa2/kernels/complex_128bit_256bit_512bit_BLOCK_template.c:9427:9: error: cannot convert a value of type 'int' to vector type __vector(8) double' which has different size 9427 | h1_imag = (__SIMD_DATATYPE) _XOR_EPI((__m512i) h1_imag, (__m512i) sign);

Possible solution
Replace '_XOR_EPI' with '_SIMD_XOR_EPI' in file: complex_128bit_256bit_512bit_BLOCK_template.c
See attached patch, add_missing_simd_prefix.patch
add_missing_simd_prefix.patch

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions