Ignore:
Timestamp:
10/24/17 01:32:57 (7 years ago)
Author:
dubos
Message:

trunk : backported r600-603 from devel

Location:
codes/icosagcm/trunk/src/parallel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/trunk/src/parallel/omp_para.F90

    r548 r604  
    204204  END SUBROUTINE init_omp_para 
    205205 
    206   SUBROUTINE distrib_level(size,lbegin,lend) 
    207   IMPLICIT NONE 
    208     INTEGER,INTENT(IN)  :: size   
     206  SUBROUTINE distrib_level(ibegin,iend, lbegin,lend) 
     207  IMPLICIT NONE 
     208    INTEGER,INTENT(IN)  :: ibegin,iend   
    209209    INTEGER,INTENT(OUT) :: lbegin   
    210210    INTEGER,INTENT(OUT) :: lend   
    211     INTEGER :: div,rest 
    212      
     211    INTEGER :: size,div,rest 
     212    size=iend-ibegin+1 
    213213    div=size/omp_level_size 
    214214    rest=MOD(size,omp_level_size) 
    215215    IF (omp_level_rank<rest) THEN 
    216       lbegin=(div+1)*omp_level_rank+1 
     216      lbegin=(div+1)*omp_level_rank + ibegin 
    217217      lend=lbegin+div 
    218218    ELSE 
    219       lbegin=(div+1)*rest + (omp_level_rank-rest)*div+1 
     219      lbegin=(div+1)*rest + (omp_level_rank-rest)*div + ibegin 
    220220      lend=lbegin+div-1 
    221221    ENDIF 
  • codes/icosagcm/trunk/src/parallel/transfert_mpi.f90

    r548 r604  
    12371237 
    12381238          dim3=size(field(ind)%rval3d,2) 
    1239           CALL distrib_level(dim3,lbegin,lend) 
     1239          CALL distrib_level(1,dim3, lbegin,lend) 
    12401240 
    12411241          rval3d=>field(ind)%rval3d 
     
    12951295          IF (.NOT. assigned_domain(ind) ) CYCLE 
    12961296          dim3=size(field(ind)%rval3d,2) 
    1297           CALL distrib_level(dim3,lbegin,lend) 
     1297          CALL distrib_level(1,dim3, lbegin,lend) 
    12981298          rval3d=>field(ind)%rval3d 
    12991299          req=>message%request(ind) 
     
    13491349 
    13501350          dim3=size(field(ind)%rval4d,2) 
    1351           CALL distrib_level(dim3,lbegin,lend) 
     1351          CALL distrib_level(1,dim3, lbegin,lend) 
    13521352          dim4=size(field(ind)%rval4d,3) 
    13531353          rval4d=>field(ind)%rval4d 
     
    14111411           
    14121412          dim3=size(field(ind)%rval4d,2) 
    1413           CALL distrib_level(dim3,lbegin,lend) 
     1413          CALL distrib_level(1,dim3, lbegin,lend) 
    14141414          dim4=size(field(ind)%rval4d,3) 
    14151415          rval4d=>field(ind)%rval4d 
     
    15891589              dim3=size(rval3d,2) 
    15901590     
    1591               CALL distrib_level(dim3,lbegin,lend) 
     1591              CALL distrib_level(1,dim3, lbegin,lend) 
    15921592              offset=recv%offset*dim3 + (lbegin-1)*recv%size 
    15931593              CALL trace_start("copy_from_buffer") 
     
    16371637 
    16381638              dim3=size(rval4d,2) 
    1639               CALL distrib_level(dim3,lbegin,lend) 
     1639              CALL distrib_level(1,dim3, lbegin,lend) 
    16401640              dim4=size(rval4d,3) 
    16411641              CALL trace_start("copy_from_buffer") 
Note: See TracChangeset for help on using the changeset viewer.