Note: This is E3SM-specific (SCORPIO external / E3SM docker image).
Description
The spio component fails to compile in the docker environment because SCORPIO uses the deprecated MPI-1 symbol MPI_Type_hvector, which has been removed in the Open MPI version currently installed in the image.
Affected Test
SMS_P1.T42_T42.S.docker_gnu
Component / Build Log
- Component:
spio (SCORPIO I/O library)
- Log:
bld/spio.bldlog.*
Error
/e3sm/externals/scorpio/src/clib/core/rearr/pio_rearr_contig.cpp:391:17:
error: 'MPI_Type_hvector' was not declared in this scope; did you mean 'MPI_Type_vector'?
(also lines 405, 479, 493, 1390, 1402)
gmake[2]: *** [.../pio_rearr_contig.cpp.o] Error 1
gmake[1]: *** [.../spio_core_rearr.dir/all] Error 2
gmake: *** [all] Error 2
Root Cause
MPI_Type_hvector is an MPI-1 symbol deprecated in MPI-2 and removed by default in recent Open MPI releases. The SCORPIO external still references it, so the build breaks against the newer MPI in the docker image.
Fix
Pin Open MPI in the docker image to a version that still exposes the legacy MPI-1 symbols. (Longer term, SCORPIO should migrate MPI_Type_hvector -> MPI_Type_create_hvector.)
Environment
- Machine:
docker
- Compiler:
gnu
- Project: E3SM
Description
The
spiocomponent fails to compile in thedockerenvironment because SCORPIO uses the deprecated MPI-1 symbolMPI_Type_hvector, which has been removed in the Open MPI version currently installed in the image.Affected Test
Component / Build Log
spio(SCORPIO I/O library)bld/spio.bldlog.*Error
Root Cause
MPI_Type_hvectoris an MPI-1 symbol deprecated in MPI-2 and removed by default in recent Open MPI releases. The SCORPIO external still references it, so the build breaks against the newer MPI in thedockerimage.Fix
Pin Open MPI in the
dockerimage to a version that still exposes the legacy MPI-1 symbols. (Longer term, SCORPIO should migrateMPI_Type_hvector->MPI_Type_create_hvector.)Environment
dockergnu