【发布时间】:2019-06-25 17:57:04
【问题描述】:
我正在使用 Parallel Studio 2019 中的 Intel 编译器集合,并尝试针对最近的 CPU 构建 MPICH-3.2。我的configure 场景:
MPICHLIB_CFLAGS="-xCORE-AVX512" \
MPICHLIB_CXXFLAGS="-xCORE-AVX512" \
MPICHLIB_FCFLAGS="-xCORE-AVX512" \
MPICHLIB_FFLAGS="-xCORE-AVX512" \
LDFLAGS="-Wl,--disable-new-dtags" \
./configure \
CC="/opt/intel/bin/icc" \
CXX="/opt/intel/bin/icpc" \
FC="/opt/intel/bin/ifort" \
F77="/opt/intel/bin/ifort" \
--with-pic \
--enable-shared \
AR="ar" \
RANLIB="ranlib" \
--enable-f77 \
--enable-fc \
--enable-cxx \
--enable-fast=all,nompit \
--prefix=/usr \
--host=x86_64-pc-linux-gnu \
--with-cross=/root/fort.types
/root/fort.types 包含:
CROSS_F77_SIZEOF_INTEGER=4
CROSS_F77_SIZEOF_REAL=4
CROSS_F77_SIZEOF_DOUBLE_PRECISION=8
CROSS_F77_TRUE_VALUE=1
CROSS_F77_FALSE_VALUE=0
CROSS_F90_ADDRESS_KIND=8
CROSS_F90_INTEGER_KIND=4
configure 成功完成但构建失败并出现以下错误:
CC src/glue/romio/lib_libmpi_la-all_romio_symbols.lo
src/binding/fortran/use_mpi/create_f90_real.c(75): error: expected an expression
{ MPIR_F90_REAL_MODEL, MPI_REAL},
^
src/binding/fortran/use_mpi/create_f90_real.c(76): error: expected an expression
{ MPIR_F90_DOUBLE_MODEL, MPI_DOUBLE_PRECISION } };
^
compilation aborted for src/binding/fortran/use_mpi/create_f90_real.c (code 2)
make[2]: *** [src/binding/fortran/use_mpi/lib_libmpi_la-create_f90_real.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
src/binding/fortran/use_mpi/create_f90_complex.c(76): error: expected an expression
{ MPIR_F90_REAL_MODEL, MPI_COMPLEX},
^
src/binding/fortran/use_mpi/create_f90_complex.c(77): error: expected an expression
{ MPIR_F90_DOUBLE_MODEL, MPI_DOUBLE_COMPLEX } };
^
compilation aborted for src/binding/fortran/use_mpi/create_f90_complex.c (code 2)
make[2]: *** [src/binding/fortran/use_mpi/lib_libmpi_la-create_f90_complex.lo] Error 1
make[2]: Leaving directory `/root/mpich-3.2'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/mpich-3.2'
make: *** [all] Error 2
我对此进行了谷歌搜索,并发现 mpif90model.h isn't initialized 因此宏 MPIR_F90_* 未定义。上面的链接里有提到:
更具体地说,应该运行并告知的二进制文件 配置它想知道的链接失败,因为配置尝试 设置 rpath。
如何在不禁用 fortran 库的情况下针对英特尔编译器交叉编译 MPICH-3.2?
我在 Docker 环境中编译 MPICH-3.2,使用 SLES 11 SP4 作为容器操作系统。
【问题讨论】: