Changeset 327 for codes/icosagcm/trunk/src/omp_para.F90
- Timestamp:
- 02/09/15 20:18:34 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/omp_para.F90
r324 r327 68 68 IMPLICIT NONE 69 69 LOGICAL, INTENT(IN) :: is_mpi_master 70 INTEGER :: ll_nb,i 70 INTEGER :: ll_nb,i,llb,lle 71 71 72 72 #ifdef CPP_USING_OMP … … 77 77 78 78 IF (using_openmp) THEN 79 !$OMP PARALLEL PRIVATE(ll_nb,i )79 !$OMP PARALLEL PRIVATE(ll_nb,i,llb,lle) 80 80 81 81 !$OMP MASTER … … 123 123 IF (omp_level_rank==omp_level_size-1) is_omp_last_level=.TRUE. 124 124 125 ll_end=0 125 lle=0 126 126 127 DO i=0,omp_level_rank 127 ll _begin=ll_end+1128 llb=lle+1 128 129 ll_nb=llm/omp_level_size 129 130 IF (MOD(llm,omp_level_size)>i) ll_nb=ll_nb+1 130 ll _end=ll_begin+ll_nb-1131 lle=llb+ll_nb-1 131 132 ENDDO 133 ll_begin=llb 134 ll_end=lle 132 135 133 136 ll_beginp1=ll_begin … … 160 163 161 164 ELSE 162 is_master=is_mpi_master163 165 omp_size=1 164 166 omp_level_size=1 … … 198 200 END SUBROUTINE init_omp_para 199 201 202 SUBROUTINE distrib_level(size,lbegin,lend) 203 IMPLICIT NONE 204 INTEGER,INTENT(IN) :: size 205 INTEGER,INTENT(OUT) :: lbegin 206 INTEGER,INTENT(OUT) :: lend 207 INTEGER :: div,rest 208 209 div=size/omp_level_size 210 rest=MOD(size,omp_level_size) 211 IF (omp_level_rank<rest) THEN 212 lbegin=(div+1)*omp_level_rank+1 213 lend=lbegin+div 214 ELSE 215 lbegin=(div+1)*rest + (omp_level_rank-rest)*div+1 216 lend=lbegin+div-1 217 ENDIF 218 END SUBROUTINE distrib_level 219 200 220 201 221 SUBROUTINE switch_omp_distrib_level
Note: See TracChangeset
for help on using the changeset viewer.