Building OpenMPI 4.1.0 with the PGI 21.1 compiler on a Broadwell
processor, I get this error
libtool: compile: pgcc -DHAVE_CONFIG_H -I.
-I../../../../opal/include -I../../../../ompi/include
-I../../../../oshmem/include
-I../../../../opal/mca/hwloc/hwloc201/hwloc/include/private/autogen
-I../../../../opal/mca/hwloc/hwloc201/hwloc/include/hwloc/autogen
-I../../../../ompi/mpiext/cuda/c -DGENERATE_SSE3_CODE
-DGENERATE_SSE41_CODE -DGENERATE_AVX_CODE -DGENERATE_AVX2_CODE
-DGENERATE_AVX512_CODE -I../../../.. -I../../../../orte/include
-I/gpfs/fs1/SHARE/Utils/PGI/21.1/Linux_x86_64/21.1/cuda/11.2/include
-DUCS_S_PACKED= -I/gpfs/fs1/SHARE/Utils/ZLib/1.2.11/PGI-21.1/include
-I/gpfs/fs1/SHARE/Utils/HWLoc/2.4.0/PGI-21.1_CUDA-11.2.0.0_460.27.04/include
-I/usr/local/include -I/usr/local/include -march=skylake-avx512 -O3
-DNDEBUG -m64 -tp=px -Mnodalign -fno-strict-aliasing -c
op_avx_functions.c -MD -fPIC -DPIC -o
.libs/liblocal_ops_avx512_la-op_avx_functions.o
LLVM ERROR: Cannot select: intrinsic %llvm.x86.sse3.ldu.dq
Makefile:1993: recipe for target
'liblocal_ops_avx512_la-op_avx_functions.lo' failed
make[2]: *** [liblocal_ops_avx512_la-op_avx_functions.lo] Error 1
make[2]: Leaving directory
'/gpfs/fs1/SHARE/Utils/OpenMPI/4.1.0/PGI-21.1_CUDA-11.2.0.0_460.27.04_UCX-1.10.0-rc2_HWLoc-2.4.0_ZLib-1.2.11/distro/ompi/mca/op/avx'
and the GCC 10.2.0 compiler gives me errors like this:
op_avx_functions.c: In function
‘ompi_op_avx_2buff_bxor_uint64_t_avx512’:
op_avx_functions.c:208:21: warning: AVX512F vector return without
AVX512F enabled changes the ABI [-Wpsabi]
208 | __m512i vecA =
_mm512_loadu_si512((__m512i*)in); \
| ^~~~
op_avx_functions.c:263:5: note: in expansion of macro
‘OP_AVX_AVX512_BIT_FUNC’
263 | OP_AVX_AVX512_BIT_FUNC(name, type_size, type,
op); \
| ^~~~~~~~~~~~~~~~~~~~~~
op_avx_functions.c:573:5: note: in expansion of macro ‘OP_AVX_BIT_FUNC’
573 | OP_AVX_BIT_FUNC(bxor, 64, uint64_t, xor)
| ^~~~~~~~~~~~~~~
In file included from
/gpfs/fs1/SHARE/Utils/GCC/10.2.0/GCC-BASE-7.5.0_GMP-6.2.1_ISL-0.23_MPFR-4.1.0_MPC-1.2.1_CUDA-11.2.0.0_460.27.04/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/immintrin.h:55,
from op_avx_functions.c:26:
op_avx_functions.c: In function ‘ompi_op_avx_2buff_max_int8_t_avx512’:
/gpfs/fs1/SHARE/Utils/GCC/10.2.0/GCC-BASE-7.5.0_GMP-6.2.1_ISL-0.23_MPFR-4.1.0_MPC-1.2.1_CUDA-11.2.0.0_460.27.04/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/avx512fintrin.h:6429:1:
error: inlining failed in call
to ‘always_inline’ ‘_mm512_storeu_si512’: target specific option
mismatch
I can get 4.1.0 to build with GCC by removing these flags
-march=corei7-avx -mtune=corei7-avx
and PGI by removing this flag
-tp=px
I didn't have these issues with the OpenMPI 4.0.4 source. Is there a bug
in the 4.1.0?