https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113495
--- Comment #3 from JuzheZhong <juzhe.zhong at rivai dot ai> --- Ok. The reduced case: # 1 "module_first_rk_step_part1.fppized.f90" # 1 "<built-in>" # 1 "<command-line>" # 1 "module_first_rk_step_part1.fppized.f90" !WRF:MEDIATION_LAYER:SOLVER MODULE module_first_rk_step_part1 CONTAINS SUBROUTINE first_rk_step_part1 ( grid , config_flags & , moist , moist_tend & , chem , chem_tend & , tracer, tracer_tend & , scalar , scalar_tend & , fdda3d, fdda2d & , aerod & , ru_tendf, rv_tendf & , rw_tendf, t_tendf & , ph_tendf, mu_tendf & , tke_tend & , adapt_step_flag , curr_secs & , psim , psih , wspd , gz1oz0 , br , chklowq & , cu_act_flag , hol , th_phy & , pi_phy , p_phy , t_phy & , dz8w , p8w , t8w & , ids, ide, jds, jde, kds, kde & , ims, ime, jms, jme, kms, kme & , ips, ipe, jps, jpe, kps, kpe & , imsx,imex,jmsx,jmex,kmsx,kmex & , ipsx,ipex,jpsx,jpex,kpsx,kpex & , imsy,imey,jmsy,jmey,kmsy,kmey & , ipsy,ipey,jpsy,jpey,kpsy,kpey & , k_start , k_end & , f_flux & ) USE module_state_description USE module_model_constants USE module_domain, ONLY : domain, domain_clock_get, get_ijk_from_subgrid USE module_configure, ONLY : grid_config_rec_type, model_config_rec USE module_radiation_driver, ONLY : pre_radiation_driver, radiation_driver USE module_surface_driver, ONLY : surface_driver USE module_cumulus_driver, ONLY : cumulus_driver USE module_shallowcu_driver, ONLY : shallowcu_driver USE module_pbl_driver, ONLY : pbl_driver USE module_fr_fire_driver_wrf, ONLY : fire_driver_em_step USE module_fddagd_driver, ONLY : fddagd_driver USE module_em, ONLY : init_zero_tendency USE module_force_scm USE module_convtrans_prep USE module_big_step_utilities_em, ONLY : phy_prep use module_scalar_tables USE module_dm, ONLY : local_communicator, mytask, ntasks, ntasks_x, ntasks_y, local_communicator_periodic, wrf_dm_maxval USE module_comm_dm, ONLY : halo_em_phys_a_sub,halo_em_fdda_sfc_sub,halo_pwp_sub,halo_em_chem_e_3_sub, & halo_em_chem_e_5_sub, halo_em_hydro_noahmp_sub USE module_utility IMPLICIT NONE TYPE ( domain ), INTENT(INOUT) :: grid TYPE ( grid_config_rec_type ), INTENT(IN) :: config_flags TYPE(WRFU_Time) :: currentTime INTEGER, INTENT(IN) :: ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe, & imsx,imex,jmsx,jmex,kmsx,kmex, & ipsx,ipex,jpsx,jpex,kpsx,kpex, & imsy,imey,jmsy,jmey,kmsy,kmey, & ipsy,ipey,jpsy,jpey,kpsy,kpey LOGICAL ,INTENT(IN) :: adapt_step_flag REAL, INTENT(IN) :: curr_secs REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: moist REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_moist),INTENT(INOUT) :: moist_tend REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_chem),INTENT(INOUT) :: chem REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_chem),INTENT(INOUT) :: chem_tend REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_tracer),INTENT(INOUT) :: tracer REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_tracer),INTENT(INOUT) :: tracer_tend REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_scalar),INTENT(INOUT) :: scalar REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_scalar),INTENT(INOUT) :: scalar_tend REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_fdda3d),INTENT(INOUT) :: fdda3d REAL ,DIMENSION(ims:ime,1:1,jms:jme,num_fdda2d),INTENT(INOUT) :: fdda2d REAL ,DIMENSION(ims:ime,kms:kme,jms:jme,num_aerod),INTENT(INOUT) :: aerod REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psim REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: psih REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: wspd REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: gz1oz0 REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: br REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: chklowq LOGICAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: cu_act_flag REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: hol REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: th_phy REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: pi_phy REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: p_phy REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t_phy REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: dz8w REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: p8w REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t8w REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: ru_tendf REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rv_tendf REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: rw_tendf REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: ph_tendf REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: t_tendf REAL ,DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: tke_tend REAL ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT) :: mu_tendf INTEGER, INTENT(IN) :: k_start, k_end LOGICAL, INTENT(IN), OPTIONAL :: f_flux ! Local real :: HYDRO_dt REAL, DIMENSION( ims:ime, jms:jme ) :: exch_temf ! 1/7/09 WA REAL, DIMENSION( ims:ime, jms:jme ) :: ht_loc, mixht INTEGER :: ij INTEGER num_roof_layers INTEGER num_wall_layers INTEGER num_road_layers INTEGER iswater LOGICAL :: l_flux INTEGER :: isurban INTEGER rk_step INTEGER :: yr, month, day, hr, minute, sec, rc CHARACTER(LEN=80) :: mesg INTEGER :: sids , side , sjds , sjde , skds , skde , & sims , sime , sjms , sjme , skms , skme , & sips , sipe , sjps , sjpe , skps , skpe CHARACTER (LEN=256) :: mminlu CHARACTER (LEN=1000) :: message CALL get_ijk_from_subgrid ( grid , & sids, side, sjds, sjde, skds, skde, & sims, sime, sjms, sjme, skms, skme, & sips, sipe, sjps, sjpe, skps, skpe ) ! initialize all tendencies to zero in order to update physics ! tendencies first (separate from dry dynamics). l_flux=.FALSE. if (present(f_flux)) l_flux=f_flux rk_step = 1 DO ij = 1 , grid%num_tiles CALL wrf_debug ( 200 , ' call init_zero_tendency' ) CALL init_zero_tendency ( ru_tendf, rv_tendf, rw_tendf, & ph_tendf, t_tendf, tke_tend, & mu_tendf, & moist_tend,chem_tend,scalar_tend, & tracer_tend,num_tracer, & num_moist,num_chem,num_scalar, & rk_step, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & grid%i_start(ij), grid%i_end(ij), & grid%j_start(ij), grid%j_end(ij), & k_start, k_end ) END DO !STARTOFREGISTRYGENERATEDINCLUDE 'inc/HALO_EM_PHYS_A.inc' ! ! WARNING This file is generated automatically by use_registry ! using the data base in the file named Registry. ! Do not edit. Your changes to this file will be lost. ! CALL HALO_EM_PHYS_A_sub ( grid, & local_communicator, & mytask, ntasks, ntasks_x, ntasks_y, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe ) !ENDOFREGISTRYGENERATEDINCLUDE DO ij = 1 , grid%num_tiles CALL wrf_debug ( 200 , ' call phy_prep' ) CALL phy_prep ( config_flags, & grid%mut, grid%muu, grid%muv, grid%u_2, & grid%v_2, grid%p, grid%pb, grid%alt, & grid%ph_2, grid%phb, grid%t_2, grid%tsk, moist, num_moist, & grid%rho,th_phy, p_phy, pi_phy, grid%u_phy, grid%v_phy, & p8w, t_phy, t8w, grid%z, grid%z_at_w, dz8w, & grid%p_hyd, grid%p_hyd_w, grid%dnw, & grid%fnm, grid%fnp, grid%znw, grid%p_top, & grid%rthraten, & grid%rthblten, grid%rublten, grid%rvblten, & grid%rqvblten, grid%rqcblten, grid%rqiblten, & grid%rucuten, grid%rvcuten, grid%rthcuten, & grid%rqvcuten, grid%rqccuten, grid%rqrcuten, & grid%rqicuten, grid%rqscuten, & grid%rushten, grid%rvshten, grid%rthshten, & grid%rqvshten, grid%rqcshten, grid%rqrshten, & grid%rqishten, grid%rqsshten, grid%rqgshten, & grid%rthften, grid%rqvften, & grid%RUNDGDTEN, grid%RVNDGDTEN, grid%RTHNDGDTEN, & grid%RPHNDGDTEN,grid%RQVNDGDTEN, grid%RMUNDGDTEN,& !jdf grid%landmask,grid%xland, & !jdf ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & grid%i_start(ij), grid%i_end(ij), & grid%j_start(ij), grid%j_end(ij), & k_start, k_end ) ENDDO ! radiation CALL domain_clock_get( grid, current_time=currentTime, & current_timestr=mesg ) CALL WRFU_TimeGet( currentTime, YY=yr, dayOfYear=day, H=hr, M=minute, S=sec, rc=rc) IF( rc/= WRFU_SUCCESS)THEN CALL wrf_error_fatal('WRFU_TimeGet failed') ENDIF ! this driver is only needed to handle non-local shadowing effects CALL pre_radiation_driver ( grid, config_flags & & ,itimestep=grid%itimestep, ra_call_offset=grid%ra_call_offset & & ,XLAT=grid%xlat, XLONG=grid%xlong, GMT=grid%gmt & & ,julian=grid%julian, xtime=grid%xtime, RADT=grid%radt & & ,STEPRA=grid%stepra & & ,ht=grid%ht,dx=grid%dx,dy=grid%dy,sina=grid%sina,cosa=grid%cosa & & ,shadowmask=grid%shadowmask,slope_rad=config_flags%slope_rad & & ,topo_shading=config_flags%topo_shading & & ,shadlen=config_flags%shadlen,ht_shad=grid%ht_shad,ht_loc=ht_loc & & ,ht_shad_bxs=grid%ht_shad_bxs, ht_shad_bxe=grid%ht_shad_bxe & & ,ht_shad_bys=grid%ht_shad_bys, ht_shad_bye=grid%ht_shad_bye & & ,nested=config_flags%nested, min_ptchsz=grid%min_ptchsz & & ,spec_bdy_width=config_flags%spec_bdy_width & ! indexes & ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde & & ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme & & ,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe & & ,i_start=grid%i_start,i_end=min(grid%i_end, ide-1) & & ,j_start=grid%j_start,j_end=min(grid%j_end, jde-1) & & ,kts=k_start, kte=min(k_end,kde-1) & & ,num_tiles=grid%num_tiles ) CALL wrf_debug ( 200 , ' call radiation_driver' ) CALL radiation_driver( & & p_top=grid%p_top & !DJW 140312 added p_top for vertical nesting & ,ACFRCV=grid%acfrcv ,ACFRST=grid%acfrst ,ALBEDO=grid%albedo & & ,CFRACH=grid%cfrach ,CFRACL=grid%cfracl ,CFRACM=grid%cfracm & & ,CUPPT=grid%cuppt ,CZMEAN=grid%czmean ,DT=grid%dt & & ,DZ8W=dz8w ,EMISS=grid%emiss ,GLW=grid%glw & & ,GMT=grid%gmt ,GSW=grid%gsw ,HBOT=grid%hbot & & ,HTOP=grid%htop ,HBOTR=grid%hbotr ,HTOPR=grid%htopr & & ,ICLOUD=config_flags%icloud & & ,ITIMESTEP=grid%itimestep,JULDAY=grid%julday , JULIAN=grid%julian & & ,JULYR=grid%julyr ,LW_PHYSICS=config_flags%ra_lw_physics & & ,NCFRCV=grid%ncfrcv ,NCFRST=grid%ncfrst ,NPHS=1 & & ,o3input=config_flags%o3input ,O3rad=grid%o3rad & & ,aer_opt=config_flags%aer_opt ,aerod=aerod(:,:,:,P_ocarbon:P_upperaer) & & ,swint_opt=config_flags%swint_opt & & ,P8W=grid%p_hyd_w ,P=grid%p_hyd ,PI=pi_phy & & ,RADT=grid%radt ,RA_CALL_OFFSET=grid%ra_call_offset & & ,RHO=grid%rho ,RLWTOA=grid%rlwtoa & & ,RSWTOA=grid%rswtoa ,RTHRATEN=grid%rthraten & & ,RTHRATENLW=grid%rthratenlw ,RTHRATENSW=grid%rthratensw & & ,SNOW=grid%snow ,STEPRA=grid%stepra ,SWDOWN=grid%swdown & & ,SWDOWNC=grid%swdownc ,SW_PHYSICS=config_flags%ra_sw_physics & & ,T8W=t8w ,T=grid%t_phy ,TAUCLDC=grid%taucldc & & ,TAUCLDI=grid%taucldi ,TSK=grid%tsk ,VEGFRA=grid%vegfra & & ,WARM_RAIN=grid%warm_rain ,XICE=grid%xice ,XLAND=grid%xland & & ,XLAT=grid%xlat ,XLONG=grid%xlong ,YR=yr & ! SSiB LSM radiation components (fds 06/2010) & ,ALSWVISDIR=grid%alswvisdir ,ALSWVISDIF=grid%alswvisdif & !ssib & ,ALSWNIRDIR=grid%alswnirdir ,ALSWNIRDIF=grid%alswnirdif & !ssib & ,SWVISDIR=grid%swvisdir ,SWVISDIF=grid%swvisdif & !ssib & ,SWNIRDIR=grid%swnirdir ,SWNIRDIF=grid%swnirdif & !ssib & ,SF_SURFACE_PHYSICS=config_flags%sf_surface_physics & !ssib ! WRF-solar and aerosol variables from jararias 2013/8 and 2013/11 & ,SWDDIR=grid%swddir,SWDDNI=grid%swddni,SWDDIF=grid%swddif & & ,Gx=grid%Gx,Bx=grid%Bx,gg=grid%gg,bb=grid%bb & & ,swdown_ref=grid%swdown_ref,swddir_ref=grid%swddir_ref & & ,coszen_ref=grid%coszen_ref & & ,aer_type=config_flags%aer_type & & ,aer_aod550_opt=config_flags%aer_aod550_opt,aer_aod550_val=config_flags%aer_aod550_val & & ,aer_angexp_opt=config_flags%aer_angexp_opt,aer_angexp_val=config_flags%aer_angexp_val & & ,aer_ssa_opt=config_flags%aer_ssa_opt,aer_ssa_val=config_flags%aer_ssa_val & & ,aer_asy_opt=config_flags%aer_asy_opt,aer_asy_val=config_flags%aer_asy_val & & ,aod5502d=grid%aod5502d,angexp2d=grid%angexp2d,aerssa2d=grid%aerssa2d & & ,aerasy2d=grid%aerasy2d,aod5503d=grid%aod5503d & !Optional solar variables & ,DECLINX=grid%declin ,SOLCONX=grid%solcon ,COSZEN=grid%coszen ,HRANG=grid%hrang & & , CEN_LAT=grid%cen_lat & & ,Z=grid%z & & ,ALEVSIZ=grid%alevsiz, no_src_types=grid%no_src_types & & ,LEVSIZ=grid%levsiz, N_OZMIXM=num_ozmixm & & ,N_AEROSOLC=num_aerosolc & & ,PAERLEV=grid%paerlev ,ID=grid%id & & ,CAM_ABS_DIM1=grid%cam_abs_dim1, CAM_ABS_DIM2=grid%cam_abs_dim2 & & ,CAM_ABS_FREQ_S=grid%cam_abs_freq_s & & ,XTIME=grid%xtime & ,CURR_SECS=curr_secs, ADAPT_STEP_FLAG=adapt_step_flag & ! indexes & ,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde & & ,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme & & ,i_start=grid%i_start,i_end=min(grid%i_end, ide-1) & & ,j_start=grid%j_start,j_end=min(grid%j_end, jde-1) & & ,kts=k_start, kte=min(k_end,kde-1) & & ,num_tiles=grid%num_tiles & ! Optional !JJS 20101020 vvvvv & , TLWDN=grid%tlwdn, TLWUP=grid%tlwup & ! goddard schemes & , SLWDN=grid%slwdn, SLWUP=grid%slwup & ! goddard schemes & , TSWDN=grid%tswdn, TSWUP=grid%tswup & ! goddard schemes & , SSWDN=grid%sswdn, SSWUP=grid%sswup & ! goddard schemes !JJS 20101020 ^^^^^ & , CLDFRA=grid%cldfra, CLDFRA_MP_ALL=grid%cldfra_mp_all & & , LRADIUS=grid%LRADIUS,IRADIUS=grid%IRADIUS & !BSINGH(01/22/2014) & , CLDFRA_DP=grid%cldfra_dp & ! ckay for subgrid cloud & , CLDFRA_SH=grid%cldfra_sh & & , re_cloud=grid%re_cloud, re_ice=grid%re_ice, re_snow=grid%re_snow & ! G. Thompson & , has_reqc=grid%has_reqc, has_reqi=grid%has_reqi, has_reqs=grid%has_reqs & ! G. Thompson & , PB=grid%pb & & , F_ICE_PHY=grid%f_ice_phy,F_RAIN_PHY=grid%f_rain_phy & & , QV=moist(ims,kms,jms,P_QV), F_QV=F_QV & & , QC=moist(ims,kms,jms,P_QC), F_QC=F_QC & & , QR=moist(ims,kms,jms,P_QR), F_QR=F_QR & & , QI=moist(ims,kms,jms,P_QI), F_QI=F_QI & & , QS=moist(ims,kms,jms,P_QS), F_QS=F_QS & & , QG=moist(ims,kms,jms,P_QG), F_QG=F_QG & & , QNDROP=scalar(ims,kms,jms,P_QNDROP), F_QNDROP=F_QNDROP & & ,ACSWUPT=grid%acswupt ,ACSWUPTC=grid%acswuptc & & ,ACSWDNT=grid%acswdnt ,ACSWDNTC=grid%acswdntc & & ,ACSWUPB=grid%acswupb ,ACSWUPBC=grid%acswupbc & & ,ACSWDNB=grid%acswdnb ,ACSWDNBC=grid%acswdnbc & & ,ACLWUPT=grid%aclwupt ,ACLWUPTC=grid%aclwuptc & & ,ACLWDNT=grid%aclwdnt ,ACLWDNTC=grid%aclwdntc & & ,ACLWUPB=grid%aclwupb ,ACLWUPBC=grid%aclwupbc & & ,ACLWDNB=grid%aclwdnb ,ACLWDNBC=grid%aclwdnbc & & ,SWUPT=grid%swupt ,SWUPTC=grid%swuptc & & ,SWDNT=grid%swdnt ,SWDNTC=grid%swdntc & & ,SWUPB=grid%swupb ,SWUPBC=grid%swupbc & & ,SWDNB=grid%swdnb ,SWDNBC=grid%swdnbc & & ,LWUPT=grid%lwupt ,LWUPTC=grid%lwuptc & & ,LWDNT=grid%lwdnt ,LWDNTC=grid%lwdntc & & ,LWUPB=grid%lwupb ,LWUPBC=grid%lwupbc & & ,LWDNB=grid%lwdnb ,LWDNBC=grid%lwdnbc & & ,LWCF=grid%lwcf & & ,SWCF=grid%swcf & & ,OLR=grid%olr & & ,AERODM=grid%aerodm, PINA=grid%pina, AODTOT=grid%aodtot & & ,OZMIXM=grid%ozmixm, PIN=grid%pin & & ,M_PS_1=grid%m_ps_1, M_PS_2=grid%m_ps_2, AEROSOLC_1=grid%aerosolc_1 & & ,AEROSOLC_2=grid%aerosolc_2, M_HYBI0=grid%m_hybi & & ,ABSTOT=grid%abstot, ABSNXT=grid%absnxt, EMSTOT=grid%emstot & & ,RADTACTTIME=grid%radtacttime & & ,ICLOUD_CU=config_flags%ICLOUD_CU & & ,QC_CU=grid%QC_CU , QI_CU=grid%QI_CU & & ,slope_rad=config_flags%slope_rad,topo_shading=config_flags%topo_shading & & ,shadowmask=grid%shadowmask,ht=grid%ht,dx=grid%dx,dy=grid%dy & & ,IS_CAMMGMP_USED = grid%is_CAMMGMP_used ) !********* Surface driver ! surface !gmm halo of wtd and riverflow for leafhydro IF ( config_flags%sf_surface_physics.eq.NOAHMPSCHEME ) THEN IF ( config_flags%opt_run.eq.5.and.mod(grid%itimestep,grid%STEPWTD).eq.0 ) THEN !STARTOFREGISTRYGENERATEDINCLUDE 'inc/HALO_EM_HYDRO_NOAHMP.inc' ! ! WARNING This file is generated automatically by use_registry ! using the data base in the file named Registry. ! Do not edit. Your changes to this file will be lost. ! CALL HALO_EM_HYDRO_NOAHMP_sub ( grid, & local_communicator, & mytask, ntasks, ntasks_x, ntasks_y, & ids, ide, jds, jde, kds, kde, & ims, ime, jms, jme, kms, kme, & ips, ipe, jps, jpe, kps, kpe ) !ENDOFREGISTRYGENERATEDINCLUDE ENDIF ENDIF END SUBROUTINE first_rk_step_part1 END MODULE module_first_rk_step_part1 Which can easily help us to debug memory hog since we don't need to compile it with too long time: real 0m22.924s user 0m22.242s sys 0m0.640s But we can see the memory-hog in report: machine dep reorg : 2.05 ( 9%) 0.33 ( 56%) 2.40 ( 10%) 939M ( 80%)