# (REDUCED) Compile-time issue on openacc branch with NVHPC 23.11 ## Compiler reports ("dependence prevents parallelization") ### Subroutine ice_dyn_adv_pra - Line icedyn_adv_pra.f90:343 (nemo.src/cfgs/ORCA2/BLD/ppsrc/nemo/icedyn_adv_pra.f90): ``` 343, Loop is parallelizable Loop carried dependence of pe_i$r prevents parallelization Loop carried backward dependence of pe_i$r prevents vectorization Loop is parallelizable Loop carried dependence of pe_s$r prevents parallelization Loop carried backward dependence of pe_s$r prevents vectorization Loop is parallelizable ``` ``` ... 343 zdiag_adv_heat(ji,jj) = - SUM(SUM( pe_i(ji,jj,1:nlay_i,:) , dim=2 ), dim=1 ) & 344 & - SUM(SUM( pe_s(ji,jj,1:nlay_s,:) , dim=2 ), dim=1 ) 345 346 ! record at_i before advection (for open water) 347 zati1(ji,jj) = SUM( pa_i(ji,jj,:), dim=1 ) 348 END DO 349 END DO 350 !$acc end parallel loop ``` - Line icedyn_adv_pra.f90:528 (nemo.src/cfgs/ORCA2/BLD/ppsrc/nemo/icedyn_adv_pra.f90): ``` 528, Loop is parallelizable Loop carried reuse of pa_i$r22 prevents parallelization Loop is parallelizable ``` ``` 525 !$acc parallel loop 526 !! !$omp do 527 DO jj = 1, jpj 528 zati2(:,jj) = SUM( pa_i(:,jj,:), dim=2 ) 529 END DO 530 !! !$omp end do 531 !$acc end parallel loop ``` - Line icedyn_adv_pra.f90:572 (nemo.src/cfgs/ORCA2/BLD/ppsrc/nemo/icedyn_adv_pra.f90): ``` 572, Loop is parallelizable Loop carried dependence of pe_i$r28 prevents parallelization Loop carried backward dependence of pe_i$r28 prevents vectorization Loop is parallelizable Loop carried dependence of pe_s$r30 prevents parallelization Loop carried backward dependence of pe_s$r30 prevents vectorization Loop is parallelizable ``` ``` ... 572 diag_adv_heat(ji,jj) = diag_adv_heat(ji,jj) + ( - SUM(SUM( pe_i(ji,jj,1:nlay_i,:) , dim=2 ), dim=1 ) & 573 & - SUM(SUM( pe_s(ji,jj,1:nlay_s,:) , dim=2 ), dim=1 ) & 574 & - zdiag_adv_heat(ji,jj) ) * z1_dt 575 END DO 576 END DO 577 !! !$omp end do 578 !! !$omp end parallel 579 !$acc end parallel loop ``` ### Subroutine lbc_nfd_nogather_2d_gpu_dp - Line lbcnfd.f90:8835 (nemo.src/cfgs/ORCA2/BLD/ppsrc/nemo/lbcnfd.f90): ``` 8835, Loop carried dependence of ptab prevents parallelization Loop carried backward dependence of ptab prevents vectorization Generating implicit firstprivate(psgn,nlcj) ``` ``` 8834 !$acc parallel loop gang vector 8835 DO jl = 1, ipl; DO jk = 1, ipk 8836 ptab(1,nlcj) = psgn * ptab(3,nlcj-2) 8837 END DO; END DO 8838 !$acc end parallel loop ``` - Line lbcnfd.f90:8851 (nemo.src/cfgs/ORCA2/BLD/ppsrc/nemo/lbcnfd.f90): ``` 8851, Loop carried dependence of ptab prevents parallelization Loop carried dependence of ptab prevents vectorization Loop carried backward dependence of ptab prevents vectorization Complex loop carried dependence of ptab prevents parallelization 8852, Loop carried dependence of ptab prevents parallelization Loop carried backward dependence of ptab prevents vectorization Generating implicit firstprivate(jia,jpnj,jpiglo,ijta,ijt,nlcj,psgn,nimpp) ``` ``` 8850 !$acc parallel loop gang vector 8851 DO jl = 1, ipl; DO jk = 1, ipk 8852 DO ji = startloop, nlci 8853 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4 8854 jia = ji + nimpp - 1 8855 ijta = jpiglo - jia + 2 8856 IF( ijta >= startloop+nimpp-1 .AND. ijta < jia ) THEN 8857 ptab(ji,nlcj-1) = psgn * ptab(ijta-nimpp+1,nlcj-1) 8858 ELSE 8859 ptab(ji,nlcj-1) = psgn * ptab2(ijt,ijpjp1,jk,jl) 8860 ENDIF 8861 END DO 8862 END DO; END DO 8863 !$acc end parallel loop ``` - Line lbcnfd.f90:8907 (nemo.src/cfgs/ORCA2/BLD/ppsrc/nemo/lbcnfd.f90): ``` 8907, Loop carried dependence of ptab prevents parallelization Loop carried dependence of ptab prevents vectorization Loop carried backward dependence of ptab prevents vectorization Complex loop carried dependence of ptab prevents parallelization 8908, Loop carried dependence of ptab prevents parallelization Loop carried backward dependence of ptab prevents vectorization Generating implicit firstprivate(jia,jpnj,jpiglo,ijua,iju,psgn,nlcj,nimpp) ``` ``` 8906 !$acc parallel loop gang vector 8907 DO jl = 1, ipl; DO jk = 1, ipk 8908 DO ji = startloop, endloop 8909 iju = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 3 8910 jia = ji + nimpp - 1 8911 ijua = jpiglo - jia + 1 8912 IF( ijua >= startloop+nimpp-1 .AND. ijua < jia ) THEN 8913 ptab(ji,nlcj-1) = psgn * ptab(ijua-nimpp+1,nlcj-1) 8914 ELSE 8915 ptab(ji,nlcj-1) = psgn * ptab2(iju,ijpjp1,jk,jl) 8916 ENDIF 8917 END DO 8918 END DO; END DO 8919 !$acc end parallel loop ``` - Line lbcnfd.f90:9020 (nemo.src/cfgs/ORCA2/BLD/ppsrc/nemo/lbcnfd.f90): ``` 9020, Loop carried dependence of ptab prevents parallelization Loop carried backward dependence of ptab prevents vectorization Generating implicit firstprivate(psgn,nlcj,nlci) ``` ``` 9019 !$acc parallel loop gang vector 9020 DO jl = 1, ipl; DO jk = 1, ipk 9021 ptab(nlci,nlcj) = psgn * ptab(nlci-2,nlcj-1) 9022 END DO; END DO 9023 !$acc end parallel loop ``` - Line lbcnfd.f90:9072 (nemo.src/cfgs/ORCA2/BLD/ppsrc/nemo/lbcnfd.f90): ``` 9072, Loop carried dependence of ptab prevents parallelization Loop carried backward dependence of ptab prevents vectorization Generating implicit firstprivate(psgn,nlcj,nlci) ``` ``` 9071 !$acc parallel loop gang vector 9072 DO jl = 1, ipl; DO jk = 1, ipk 9073 ptab(nlci,nlcj) = psgn * ptab(nlci-2,nlcj-2) 9074 END DO; END DO 9075 !$acc end parallel loop ``` ### Subroutine mpp_lnk_2d_gpu_dp - Line lbclnk.f90:12906 (nemo.src/cfgs/ORCA2/BLD/ppsrc/nemo/lbclnk.f90): ``` 12906, Loop carried dependence of ptab prevents parallelization Loop carried backward dependence of ptab prevents vectorization Complex loop carried dependence of ptab prevents parallelization Loop is parallelizable Loop carried backward dependence of ptab prevents vectorization ``` ``` 12903 !$acc parallel loop gang vector 12904 DO jf = 1, ipf ! number of arrays to be treated 12905 IF( .NOT. cd_nat_temp(jf) == 'F' ) THEN ! do nothing for F point 12906 DO jl = 1, ipl ; DO jk = 1, ipk ; DO jj = 1, jpj ; DO ji = 1, ihl 12907 ptab(ji,jj) = ptab(ihl+1,jj) 12908 END DO ; END DO ; END DO ; END DO 12909 ENDIF 12910 END DO 12911 !$acc end parallel loop ``` - Line lbclnk.f90:13075 (nemo.src/cfgs/ORCA2/BLD/ppsrc/nemo/lbclnk.f90): ``` 13075, Loop carried dependence of ptab prevents parallelization Loop carried backward dependence of ptab prevents vectorization Complex loop carried dependence of ptab prevents parallelization Loop is parallelizable ``` ``` 13072 !$acc parallel loop gang vector 13073 DO jf = 1, ipf ! number of arrays to be treated 13074 IF( .NOT. cd_nat_temp(jf) == 'F' ) THEN ! do nothing for F point 13075 DO jl = 1, ipl ; DO jk = 1, ipk ; DO jj = 1, ihl ; DO ji = 1, jpi 13076 ptab(ji,jj) = ptab(ji,ihl+1) 13077 END DO ; END DO ; END DO ; END DO 13078 ENDIF 13079 END DO 13080 !$acc end parallel loop ``` ### Subroutine mpp_nfd_2d_gpu_dp - Line lbclnk.f90:17527 (nemo.src/cfgs/ORCA2/BLD/ppsrc/nemo/lbclnk.f90): ``` 17527, Loop carried reuse of znorthloc prevents parallelization Generating implicit firstprivate(js,jl) ``` ``` 17525 !$acc parallel loop gang vector 17526 DO jf = 1, ipf ! Loop over the number of arrays to be processed 17527 DO jj = 1, ipj_s(jf) 17528 js = idx_s(jf) + jj 17529 DO jl = 1, ipl 17530 DO jk = 1, ipk 17531 znorthloc(1:jpi,js,jk,jl,1) = ptab(1:jpi,jj_s(jf,jj)) 17532 END DO 17533 END DO 17534 END DO 17535 END DO 17536 !$acc end parallel loop ```