Skip to content

Hybrid MAPL build: dual mepo mount of MAPL2 (support library) and MAPL3 in GEOSgcm #1058

Description

@tclune

Context

As part of the GEOS migration to MAPL v3, GEOSgcm must be updated to mount both MAPL v3 and MAPL v2 simultaneously via mepo — a "dual mount" configuration. MAPL3 provides the new generic (coupling) layer. MAPL2 is retained as a support library providing utilities (base, shared, constants, pfio, cfio, griddedio, etc.) that have not yet been ported to MAPL3.

This issue covers the GEOSgcm fixture changes needed to support the hybrid build.

Use feature branch feature/mapl3-migration.

Background: the dual-mount strategy

The current components.yaml mounts a single copy of MAPL:

MAPL:
  local: ./src/Shared/@MAPL
  remote: ../MAPL.git
  tag: v2.67.0
  develop: develop

In the hybrid configuration, GEOSgcm will mount two copies:

  • MAPL3 at e.g. ./src/Shared/@MAPL — the release/MAPL-v3 branch
  • MAPL2 at e.g. ./src/Shared/@MAPL2 — the feature/mapl2-support-library branch, built with MAPL_SUPPORT_MAPL3=ON

Tasks

1. Update components.yaml

Add a second MAPL entry for the MAPL2 support library mount:

MAPL:
  local: ./src/Shared/@MAPL
  remote: ../MAPL.git
  develop: release/MAPL-v3

MAPL2:
  local: ./src/Shared/@MAPL2
  remote: ../MAPL.git
  develop: feature/mapl2-support-library

Exact tag/branch values will be determined during integration; the structure above shows the intent.

2. Update top-level CMakeLists.txt

Add both MAPL sub-directories and pass the hybrid flag to MAPL2:

add_subdirectory(src/Shared/@MAPL)   # MAPL3 — normal build

set(MAPL_SUPPORT_MAPL3 ON CACHE BOOL "" FORCE)
add_subdirectory(src/Shared/@MAPL2)  # MAPL2 — support library mode

3. Update CMake dependency wiring

GEOS components that have been ported to MAPL3 link against MAPL3 targets (e.g. MAPL::MAPL, MAPL.base).

GEOS components that still use MAPL2 support utilities link against MAPL2 targets (e.g. MAPL2::MAPL2, MAPL2.base).

This wiring is driven by changes in GEOSgcm_GridComp and FVdycoreCubed_GridComp (see related issues).

4. CI fixture

The MAPL v3 CI that triggers a GEOSgcm build must use this updated components.yaml. Coordinate with the CI maintainer to ensure the correct branches are pinned in the CI fixture.

5. Verify

  • GEOSgcm builds cleanly with the dual-mount configuration
  • Already-ported components build against MAPL3
  • Unported components build against MAPL2 support library

Iterative rollout

This is step 2 of the iterative plan. It should only be attempted after:

  1. MAPL2 feature/mapl2-support-library branch builds cleanly with MAPL_SUPPORT_MAPL3=ON (GEOS-ESM/MAPL #4610, #4611, #4612)
  2. At least some GridComps have been ported to MAPL3 generic layer (Port all GEOSgcm_GridComp components to MAPL3 generic (coupling) layer GEOSgcm_GridComp#1363)

Related issues

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions