mod_phys_lmdz_para.F90

路径

LMDZ.COMMON-6.3\LMDZ.COMMON\libf\phy_common\mod_phys_lmdz_para.F90

文件定位

mod_phys_lmdz_para.F90 定义物理侧并行抽象模块 mod_phys_lmdz_para。它组合 MPI 数据、OpenMP 数据和通用 transfer 封装,初始化本 rank/线程的物理列数量,并用 Test_transfert 检查 scatter/gather/bcast/reduce 等通信包装。

Mars 运行参与度

条件经过:Mars 或 COMMON 物理侧初始化物理列并行分布时经过;串行构建也通过本抽象保持接口兼容。

定义的符号

| 符号 | 类型 | 行号 | 作用 | | --- | --- | --- | | mod_phys_lmdz_para | module | 4 | 物理侧并行抽象入口。 | | klon_loc | INTEGER,SAVE,THREADPRIVATE | 9 | 当前 OpenMP 线程本地物理列数。 | | is_sequentialis_parallel | LOGICAL,SAVE | 10-11 | 运行并行状态标志。 | | is_master | LOGICAL,SAVE,THREADPRIVATE | 12 | 当前线程是否 master。 | | Init_phys_lmdz_para | subroutine | 19 | 初始化 MPI/OMP 物理列分布。 | | Test_transfert | subroutine | 49 | 测试物理侧 transfer 包装。 |

初始化流程

  1. Init_phys_lmdz_para(nbp,nbp_lon,nbp_lat,communicator) 调用 Init_phys_lmdz_mpi_data 建立 MPI 物理分布。
  2. 进入 OpenMP parallel 区,调用 Init_phys_lmdz_omp_data(klon_mpi) 建立线程内分布。
  3. 设置 klon_loc=klon_omp
  4. 根据 MPI rank 和 OpenMP rank 设置 is_master,并调用 Test_transfert
  5. parallel 区外设置 is_sequentialis_parallel

Test_transfert

测试例程构造全局 1D/2D 字段,依次验证:

只有 is_master 分支打印/检查全局结果。

复现要点

待确认

相关页面