parallel transfer 5D/6D support

源码基线:LMDZ.COMMON-6.3\LMDZ.COMMON。 Mars 运行参与度:条件经过;Mars 并行物理初始化和配置广播可经过这些 transfer 泛型。

输入范围

libf/phy_common/mod_phys_lmdz_mpi_transfert.F90
libf/phy_common/mod_phys_lmdz_omp_transfert.F90
libf/phy_common/mod_phys_lmdz_transfert_para.F90

高维支持

MPI 层 bcast_mpi 泛型在接口中包含:

源码位置:mod_phys_lmdz_mpi_transfert.F90:7-11。5D/6D 入口如 bcast_mpi_i5/i6 在第 119-133 行,bcast_mpi_r5/r6 在第 182-196 行,bcast_mpi_l5/l6 在第 245-259 行。

封装层 mod_phys_lmdz_transfert_para.F90:11-15 同样把 bcast_i5/i6bcast_r5/r6bcast_l5/l6 纳入 bcast 泛型。调用方只需要 CALL bcast(var),由 rank 和类型选择具体过程。

层次关系

调用方
  -> mod_phys_lmdz_transfert_para:bcast
       -> OMP MASTER 调 bcast_mpi
       -> bcast_omp 在线程内分发
  -> 所有 MPI ranks / OMP threads 得到同一配置或数组

因此 ioipsl_getin_p_mod 的模式是:master 调 getin,再 CALL bcast(VarOut)

OpenMP 修复

还修复了 OMP transfer 中几个竞态风险:

这些变更对 Mars 并行物理参数、诊断数组和高维场广播有直接影响,尤其是 hybrid MPI/OMP 运行。

复现检查

  1. 如果配置数组 rank 大于 4,确认 当前 bcast_*5/*6 已被编译。
  2. 物理 getin 差异先查 ioipsl_getin_p_modis_master -> bcast
  3. hybrid 运行的线程不一致问题要同时查 OMP buffer 分配和 parallel_lmdz:omp_chunk
  4. 不要把 MPI 泛型和 OMP 泛型混成一个过程;它们在 transfert_para 层组合。

相关页面