Skip to content

Pin Open MPI in docker image to fix SCORPIO build (MPI_Type_hvector removed) #5014

Description

@jasonb5

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions