Compilation issue on an AVX512-enabled cluster

Issue #31 resolved
ArchangeGabriel created an issue

When trying to compile with ICC (using the latest published tarball, shtns-3.0-r618.tar.gz), I get the following errors:

icc -march=native -O3 -xHost -I/usr/local/include -L/usr/local/lib -ffast-math -fomit-frame-pointer -std=gnu99 -fopenmp  -D_GNU_SOURCE -O2 -c sht_init.c -o sht_init.o
icc -march=native -O3 -xHost -I/usr/local/include -L/usr/local/lib -ffast-math -fomit-frame-pointer -std=gnu99 -fopenmp  -D_GNU_SOURCE -O2 -c sht_fly.c -o sht_fly.o
In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(490): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(490): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(490): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(490): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(490): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(490): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(490): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(490): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(491): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BpF, k+j, pe[j], po[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(491): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BpF, k+j, pe[j], po[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(491): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BpF, k+j, pe[j], po[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(491): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BpF, k+j, pe[j], po[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(491): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BpF, k+j, pe[j], po[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(491): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BpF, k+j, pe[j], po[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(491): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BpF, k+j, pe[j], po[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(491): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BpF, k+j, pe[j], po[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(643): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, ter[j], tor[j], tei[j], toi[j])
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(643): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, ter[j], tor[j], tei[j], toi[j])
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(643): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BtF, k+j, ter[j], tor[j], tei[j], toi[j])
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(643): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BtF, k+j, ter[j], tor[j], tei[j], toi[j])
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(643): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, ter[j], tor[j], tei[j], toi[j])
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(643): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, ter[j], tor[j], tei[j], toi[j])
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(643): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BtF, k+j, ter[j], tor[j], tei[j], toi[j])
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(643): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BtF, k+j, ter[j], tor[j], tei[j], toi[j])
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(644): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BpF, k+j, per[j], por[j], pei[j], poi[j])
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(644): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BpF, k+j, per[j], por[j], pei[j], poi[j])
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(644): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BpF, k+j, per[j], por[j], pei[j], poi[j])
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(644): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BpF, k+j, per[j], por[j], pei[j], poi[j])
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(644): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BpF, k+j, per[j], por[j], pei[j], poi[j])
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(644): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BpF, k+j, per[j], por[j], pei[j], poi[j])
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(644): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BpF, k+j, per[j], por[j], pei[j], poi[j])
                ^

In file included from sht_fly.c(32):
SHT/SHst_to_spat_fly.c(644): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BpF, k+j, per[j], por[j], pei[j], poi[j])
                ^

In file included from sht_fly.c(36):
SHT/SH_to_spat_fly.c(376): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BrF, k+j, re[j], ro[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(36):
SHT/SH_to_spat_fly.c(376): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BrF, k+j, re[j], ro[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(36):
SHT/SH_to_spat_fly.c(376): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BrF, k+j, re[j], ro[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(36):
SHT/SH_to_spat_fly.c(376): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BrF, k+j, re[j], ro[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(36):
SHT/SH_to_spat_fly.c(376): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BrF, k+j, re[j], ro[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(36):
SHT/SH_to_spat_fly.c(376): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BrF, k+j, re[j], ro[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(36):
SHT/SH_to_spat_fly.c(376): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BrF, k+j, re[j], ro[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(36):
SHT/SH_to_spat_fly.c(376): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BrF, k+j, re[j], ro[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(36):
SHT/SH_to_spat_fly.c(482): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BrF, k+j, rer[j], ror[j], rei[j], roi[j])
                ^

In file included from sht_fly.c(36):
SHT/SH_to_spat_fly.c(482): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BrF, k+j, rer[j], ror[j], rei[j], roi[j])
                ^

In file included from sht_fly.c(36):
SHT/SH_to_spat_fly.c(482): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BrF, k+j, rer[j], ror[j], rei[j], roi[j])
                ^

In file included from sht_fly.c(36):
SHT/SH_to_spat_fly.c(482): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BrF, k+j, rer[j], ror[j], rei[j], roi[j])
                ^

In file included from sht_fly.c(36):
SHT/SH_to_spat_fly.c(482): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BrF, k+j, rer[j], ror[j], rei[j], roi[j])
                ^

In file included from sht_fly.c(36):
SHT/SH_to_spat_fly.c(482): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BrF, k+j, rer[j], ror[j], rei[j], roi[j])
                ^

In file included from sht_fly.c(36):
SHT/SH_to_spat_fly.c(482): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BrF, k+j, rer[j], ror[j], rei[j], roi[j])
                ^

In file included from sht_fly.c(36):
SHT/SH_to_spat_fly.c(482): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BrF, k+j, rer[j], ror[j], rei[j], roi[j])
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(490): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(490): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(490): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(490): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(490): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(490): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(490): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(490): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(491): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BpF, k+j, pe[j], po[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(491): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BpF, k+j, pe[j], po[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(491): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BpF, k+j, pe[j], po[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(491): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BpF, k+j, pe[j], po[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(491): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BpF, k+j, pe[j], po[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(491): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BpF, k+j, pe[j], po[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(491): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BpF, k+j, pe[j], po[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(491): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BpF, k+j, pe[j], po[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(643): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, ter[j], tor[j], tei[j], toi[j])
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(643): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, ter[j], tor[j], tei[j], toi[j])
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(643): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BtF, k+j, ter[j], tor[j], tei[j], toi[j])
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(643): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BtF, k+j, ter[j], tor[j], tei[j], toi[j])
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(643): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, ter[j], tor[j], tei[j], toi[j])
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(643): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, ter[j], tor[j], tei[j], toi[j])
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(643): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BtF, k+j, ter[j], tor[j], tei[j], toi[j])
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(643): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BtF, k+j, ter[j], tor[j], tei[j], toi[j])
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(644): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BpF, k+j, per[j], por[j], pei[j], poi[j])
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(644): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BpF, k+j, per[j], por[j], pei[j], poi[j])
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(644): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BpF, k+j, per[j], por[j], pei[j], poi[j])
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(644): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BpF, k+j, per[j], por[j], pei[j], poi[j])
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(644): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BpF, k+j, per[j], por[j], pei[j], poi[j])
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(644): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BpF, k+j, per[j], por[j], pei[j], poi[j])
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(644): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BpF, k+j, per[j], por[j], pei[j], poi[j])
                ^

In file included from sht_fly.c(38):
SHT/SHst_to_spat_fly.c(644): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BpF, k+j, per[j], por[j], pei[j], poi[j])
                ^

In file included from sht_fly.c(42):
SHT/SH_to_spat_fly.c(376): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BrF, k+j, re[j], ro[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(42):
SHT/SH_to_spat_fly.c(376): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BrF, k+j, re[j], ro[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(42):
SHT/SH_to_spat_fly.c(376): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BrF, k+j, re[j], ro[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(42):
SHT/SH_to_spat_fly.c(376): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BrF, k+j, re[j], ro[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(42):
SHT/SH_to_spat_fly.c(376): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BrF, k+j, re[j], ro[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(42):
SHT/SH_to_spat_fly.c(376): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BrF, k+j, re[j], ro[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(42):
SHT/SH_to_spat_fly.c(376): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BrF, k+j, re[j], ro[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(42):
SHT/SH_to_spat_fly.c(376): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BrF, k+j, re[j], ro[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(42):
SHT/SH_to_spat_fly.c(482): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BrF, k+j, rer[j], ror[j], rei[j], roi[j])
                ^

In file included from sht_fly.c(42):
SHT/SH_to_spat_fly.c(482): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BrF, k+j, rer[j], ror[j], rei[j], roi[j])
                ^

In file included from sht_fly.c(42):
SHT/SH_to_spat_fly.c(482): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BrF, k+j, rer[j], ror[j], rei[j], roi[j])
                ^

In file included from sht_fly.c(42):
SHT/SH_to_spat_fly.c(482): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BrF, k+j, rer[j], ror[j], rei[j], roi[j])
                ^

In file included from sht_fly.c(42):
SHT/SH_to_spat_fly.c(482): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BrF, k+j, rer[j], ror[j], rei[j], roi[j])
                ^

In file included from sht_fly.c(42):
SHT/SH_to_spat_fly.c(482): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BrF, k+j, rer[j], ror[j], rei[j], roi[j])
                ^

In file included from sht_fly.c(42):
SHT/SH_to_spat_fly.c(482): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BrF, k+j, rer[j], ror[j], rei[j], roi[j])
                ^

In file included from sht_fly.c(42):
SHT/SH_to_spat_fly.c(482): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BrF, k+j, rer[j], ror[j], rei[j], roi[j])
                ^

In file included from sht_fly.c(44):
SHT/SHst_to_spat_fly.c(490): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(44):
SHT/SHst_to_spat_fly.c(490): error: argument of type "rnd" is incompatible with parameter of type "struct __m256d"
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(44):
SHT/SHst_to_spat_fly.c(490): error: cannot convert to a simd value of a different size
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

In file included from sht_fly.c(44):
SHT/SHst_to_spat_fly.c(490): error: a value of type "struct __m256d" cannot be assigned to an entity of type "rnd"
                S2D_CSTORE2(BtF, k+j, te[j], to[j], vall(0), vall(0))
                ^

compilation aborted for sht_fly.c (code 4)
make: *** [sht_fly.o] Error 4

The config.log:

checking for gcc... icc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether icc accepts -g... yes
checking for icc option to accept ISO C89... none needed
checking for a sed that does not truncate output... /usr/bin/sed
checking whether C compiler accepts -march=native... yes
checking whether C compiler accepts -ffast-math... yes
checking whether C compiler accepts -fomit-frame-pointer... yes
checking whether C compiler accepts -std=gnu99... yes
checking how to run the C preprocessor... icc -march=native -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for stdlib.h... (cached) yes
checking stdio.h usability... yes
checking stdio.h presence... yes
checking for stdio.h... yes
checking for string.h... (cached) yes
checking math.h usability... yes
checking math.h presence... yes
checking for math.h... yes
checking complex.h usability... yes
checking complex.h presence... yes
checking for complex.h... yes
checking for cos in -lm... yes
checking for icc -march=native option to support OpenMP... -fopenmp
checking whether C compiler accepts -mkl... yes
checking for fftw_plan_many_dft... yes
configure: "FFTW interface found in MKL, link with -mkl"
  verbose level = 1
checking for size_t... yes
checking for fftw_cost... yes
checking for inline... inline
checking whether time.h and sys/time.h may both be included... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking c_asm.h usability... no
checking c_asm.h presence... no
checking for c_asm.h... no
checking intrinsics.h usability... no
checking intrinsics.h presence... no
checking for intrinsics.h... no
checking mach/mach_time.h usability... no
checking mach/mach_time.h presence... no
checking for mach/mach_time.h... no
checking for hrtime_t... no
checking for gethrtime... no
checking for read_real_time... no
checking for time_base_to_time... no
checking for clock_gettime... yes
checking for mach_absolute_time... no
checking for _rtc intrinsic... no
checking whether we are using the GNU Fortran compiler... no
checking whether ifort accepts -g... yes
prefix=/usr/local
configure: creating ./config.status
config.status: creating Makefile
config.status: creating setup.py
config.status: creating sht_config.h
config.status: sht_config.h is unchanged

Comments (5)

  1. Nathanaël Schaeffer repo owner

    There is indeed a typo in the sht_private.h file. Around line 450, replace the following:

        aa = (rnd)_mm256_unpacklo_pd(rr, ii); bb = (rnd)_mm256_unpackhi_pd(rr, ii); \
    

    with:

        aa = (rnd)_mm512_unpacklo_pd(rr, ii);   bb = (rnd)_mm512_unpackhi_pd(rr, ii);   \
    

    It will be fixed in the next release. Thanks for reporting.

    Alternatively, you can configure SHTns with --enable-many-core (which uses openmp but is incompatible with --enable-openmp, so be sure to not use them together) which does not rely on the reported offending code.

  2. ArchangeGabriel reporter

    OK, and that was indeed the fix proposed by Alexis. I’ll bench Many-Core vs OpenMP, and AVX512 vs AVX2 on our new cluster.

  3. Log in to comment