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?

Reply via email to