轻量级MPI的解读

本文详细介绍了轻量级MPI代码的结构,包括关键文件的作用,如Makefile、mpiwrapper.c、profile.c等。还分析了代码调用结构,并提供了运行示例,展示了如何在特定超算平台上运行HelloWorld Fortran代码,记录并解释了运行结果。
摘要由CSDN通过智能技术生成

轻量级MPIprofiling的解读【待完善】

代码的结构

本代码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的头文件。

结构图

代码之间的调用结构图

component.h
day.h
time.c
time.h
profile.c
profile.h
mpiname.h
tauutil.h
mpiwrapper.c
mpiwrapper_f.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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值