Кросс-компиляция mpich-3.2 с коллекцией компиляторов Intel - PullRequest
0 голосов
/ 25 июня 2019

Я использую коллекцию Intel-компиляторов из Parallel Studio 2019 и пытаюсь собрать 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 не инициализирован и, следовательно, макросы MPIR_F90_* не определены. Там было упомянуто в вышеуказанной ссылке:

Более конкретно, двоичные файлы, которые должны запускаться и сообщать настроить то, что он хочет знать, не удается связать, потому что пытается настроить установить rpath.

Как я могу сделать кросс-компиляцию MPICH-3.2 с компиляторами Intel, не отключая библиотеки Fortran?

Я компилирую MPICH-3.2 в среде Docker с SLES 11 SP4 в качестве ОС контейнера.

1 Ответ

0 голосов
/ 26 июня 2019

Проблема была решена добавлением к /root/fort.types следующих переменных:

CROSS_F90_OFFSET_KIND=8
CROSS_F90_REAL_MODEL=6,37
CROSS_F90_DOUBLE_MODEL=15,307
CROSS_F90_INTEGER_MODEL=9
CROSS_F90_ALL_INTEGER_MODELS=2,1,4,2,9,4,18,8,
CROSS_F90_INTEGER_MODEL_MAP={2,1,1},{4,2,2},{9,4,4},{18,8,8},

Кажется, configure из MPICH-3.2 не готов к созданию версии для кросс-компиляции без небольшой "магии"».Официальный список рассылки проекта MPICH не помогает решить проблему.Я надеюсь, что мое открытие кому-нибудь поможет.

...