代码的结构
本代码1中的主要文件有:Makefile、component.h、day.h、hour.h、libmpit.a、mpiname.h、mpiwrapper.c、mpiwrapper_f.c、profile.c、profile.h、tauutil.h、time.c、time.h等。其中,下面标红的文件可以重点了解一下:
- Makefile:Makefile文件用于编译,可直接用make或make clean指令进行编译生成libmpit.a的静态库。
- component.h:定义了6个区域,分别是"physics"、“dynamic”、“baroclinic”、“barotropic”、“ice”、“lnd”。
- day.h:定义了天数。`
- hour.h:定义了小时。
- libmpit.a:该文件是make编译后生成的静态库文件。
- mpiname.h:用数组方式罗列了mpi的功能函数。
- mpiwrapper.c:对mpi功能函数进行同名覆盖2。
- mpiwrapper_f.c:Fortran调用C语言函数。
- profile.c:定义了profile功能。
- profile.h:定义头文件
- tauutil.h3:Tuning and Analysis Utilities (TAU) 性能分析头文件。
- time.c:定义了执行时间。
- time.h:time.c的头文件。
结构图
代码之间的调用结构图
代码函数结构:
|- mpiwrapper.c
|- MPI_Init()
|- PROFILE_START(0)
|- PMPI_Init()
|- PMPI_Comm_rank()
|- PROFILE_INIT()
|- PROFILE_STOP(0, 0)
|- MPI_Init_thread()
|- PROFILE_START(1)
|- PMPI_Init_thread()
|- PROFILE_STOP(1, 0)
|- ***
|- MPI_Profile_on()
|- PROFILE_ON()
|- MPI_Profile_off()
|- PROFILE_OFF()
|- profile.c ------------------------------------
|- PROFILE_INIT()
|- PROFILE_PHYSICS_INIT()
|- _timer_physics_start(0)
|- profile_physics_init_()
|- PROFILE_PHYSICS_INIT()
|- ***
|- PROFILE_ON()
|- PROFILE_OFF()
|- PROFILE_START()
|- PROFILE_STOP()
|- PROFILE_PHYSICS_FINISH()
|- _timer_physics_stop(0)
|- _physics_timer_clear()
|- profile_physics_finish_()
|- PROFILE_PHYSICS_FINISH()
|- ***
|- PROFILE_FINISH()
|- _timer_clear()
|- sort_mpi()