STK::SIMD AVX512 Support Does Not Work on Sky Lake Xeon with GCC 7.2.0
Created by: nmhamster
GCC 7.2.0 has initial support for AVX512 instruction generation but does not appear to have all of the intrinsic functions within its header files. When compiling for Sky Lake Xeon (which has AVX512F), this causes compilation failures.
Is there a way to disable the STK::SIMD from using the AVX512 for now so we can get the rest of the code to use automatic vectorization?
@trilinos/stk @srajama1
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp: In function ‘stk::simd::Bool stk::simd::operator<(const stk::simd::Double&, const stk::simd::Double&)’:
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp:91:21: error: ‘_mm512_cmplt_pd_mask’ was not declared in this scope
return simd::Bool(_mm512_cmplt_pd_mask(x._data, y._data));
^~~~~~~~~~~~~~~~~~~~
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp:91:21: note: suggested alternative: ‘_mm512_cmp_pd_mask’
return simd::Bool(_mm512_cmplt_pd_mask(x._data, y._data));
^~~~~~~~~~~~~~~~~~~~
_mm512_cmp_pd_mask
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp: In function ‘stk::simd::Bool stk::simd::operator<=(const stk::simd::Double&, const stk::simd::Double&)’:
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp:95:21: error: ‘_mm512_cmple_pd_mask’ was not declared in this scope
return simd::Bool(_mm512_cmple_pd_mask(x._data, y._data));
^~~~~~~~~~~~~~~~~~~~
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp:95:21: note: suggested alternative: ‘_mm512_cmp_pd_mask’
return simd::Bool(_mm512_cmple_pd_mask(x._data, y._data));
^~~~~~~~~~~~~~~~~~~~
_mm512_cmp_pd_mask
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp: In function ‘stk::simd::Bool stk::simd::operator>(const stk::simd::Double&, const stk::simd::Double&)’:
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp:99:21: error: ‘_mm512_cmplt_pd_mask’ was not declared in this scope
return simd::Bool(_mm512_cmplt_pd_mask(y._data, x._data));
^~~~~~~~~~~~~~~~~~~~
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp:99:21: note: suggested alternative: ‘_mm512_cmp_pd_mask’
return simd::Bool(_mm512_cmplt_pd_mask(y._data, x._data));
^~~~~~~~~~~~~~~~~~~~
_mm512_cmp_pd_mask
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp: In function ‘stk::simd::Bool stk::simd::operator>=(const stk::simd::Double&, const stk::simd::Double&)’:
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp:103:21: error: ‘_mm512_cmple_pd_mask’ was not declared in this scope
return simd::Bool(_mm512_cmple_pd_mask(y._data, x._data));
^~~~~~~~~~~~~~~~~~~~
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp:103:21: note: suggested alternative: ‘_mm512_cmp_pd_mask’
return simd::Bool(_mm512_cmple_pd_mask(y._data, x._data));
^~~~~~~~~~~~~~~~~~~~
_mm512_cmp_pd_mask
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp: In function ‘stk::simd::Bool stk::simd::operator==(const stk::simd::Double&, const stk::simd::Double&)’:
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp:107:21: error: ‘_mm512_cmpeq_pd_mask’ was not declared in this scope
return simd::Bool(_mm512_cmpeq_pd_mask(x._data, y._data));
^~~~~~~~~~~~~~~~~~~~
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp:107:21: note: suggested alternative: ‘_mm512_cmp_pd_mask’
return simd::Bool(_mm512_cmpeq_pd_mask(x._data, y._data));
^~~~~~~~~~~~~~~~~~~~
_mm512_cmp_pd_mask
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp: In function ‘stk::simd::Bool stk::simd::operator!=(const stk::simd::Double&, const stk::simd::Double&)’:
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp:111:21: error: ‘_mm512_cmpneq_pd_mask’ was not declared in this scope
return simd::Bool(_mm512_cmpneq_pd_mask(x._data, y._data));
^~~~~~~~~~~~~~~~~~~~~
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleOperators.hpp:111:21: note: suggested alternative: ‘_mm512_cmpneq_epi8_mask’
return simd::Bool(_mm512_cmpneq_pd_mask(x._data, y._data));
^~~~~~~~~~~~~~~~~~~~~
_mm512_cmpneq_epi8_mask
In file included from /ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/Avx512.hpp:27:0,
from /ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/Simd.hpp:12,
from /ascldap/users/sdhammo/git/nalucfd-github-repo/include/SimdInterface.h:18,
from /ascldap/users/sdhammo/git/nalucfd-github-repo/include/master_element/MasterElement.h:17,
from /ascldap/users/sdhammo/git/nalucfd-github-repo/src/ActuatorLinePointDrag.C:17:
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleMath.hpp: In function ‘stk::simd::Double stk::math::cbrt(const stk::simd::Double&)’:
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleMath.hpp:53:23: error: ‘_mm512_cbrt_pd’ was not declared in this scope
return simd::Double(_mm512_cbrt_pd(x._data));
^~~~~~~~~~~~~~
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleMath.hpp:53:23: note: suggested alternative: ‘_mm512_sqrt_pd’
return simd::Double(_mm512_cbrt_pd(x._data));
^~~~~~~~~~~~~~
_mm512_sqrt_pd
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleMath.hpp: In function ‘stk::simd::Double stk::math::log(const stk::simd::Double&)’:
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleMath.hpp:57:23: error: ‘_mm512_log_pd’ was not declared in this scope
return simd::Double(_mm512_log_pd(x._data));
^~~~~~~~~~~~~
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleMath.hpp:57:23: note: suggested alternative: ‘_mm512_or_pd’
return simd::Double(_mm512_log_pd(x._data));
^~~~~~~~~~~~~
_mm512_or_pd
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleMath.hpp: In function ‘stk::simd::Double stk::math::log10(const stk::simd::Double&)’:
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleMath.hpp:61:23: error: ‘_mm512_log10_pd’ was not declared in this scope
return simd::Double(_mm512_log10_pd(x._data));
^~~~~~~~~~~~~~~
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleMath.hpp:61:23: note: suggested alternative: ‘_mm512_loadu_pd’
return simd::Double(_mm512_log10_pd(x._data));
^~~~~~~~~~~~~~~
_mm512_loadu_pd
/ascldap/users/sdhammo/trilinos/20171203/openmpi/2.1.2/gcc/7.2.0/include/stk_simd/avx512/./Avx512DoubleMath.hpp: In function ‘stk::simd::Double stk::math::exp(const stk::simd::Double&)’: