Changeset 1115


Ignore:
Timestamp:
05/03/17 16:42:22 (4 years ago)
Author:
yushan
Message:

bug corrected in MPI_Gatherv

Location:
XIOS/dev/branch_yushan
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_yushan/extern/src_ep_dev/ep_gatherv.cpp

    r1056 r1115  
    8989          #pragma omp critical (read_from_buffer) 
    9090          { 
    91             copy(buffer, buffer+min(BUFFER_SIZE, count-j), recv_buf+j+displs[k]); 
     91            copy(buffer, buffer+min(BUFFER_SIZE, recvcounts[k]-j), recv_buf+j+displs[k]); 
    9292          } 
    9393        } 
     
    133133          #pragma omp critical (read_from_buffer) 
    134134          { 
    135             copy(buffer, buffer+min(BUFFER_SIZE, count-j), recv_buf+j+displs[k]); 
     135            copy(buffer, buffer+min(BUFFER_SIZE, recvcounts[k]-j), recv_buf+j+displs[k]); 
    136136          } 
    137137        } 
     
    177177          #pragma omp critical (read_from_buffer) 
    178178          { 
    179             copy(buffer, buffer+min(BUFFER_SIZE, count-j), recv_buf+j+displs[k]); 
     179            copy(buffer, buffer+min(BUFFER_SIZE, recvcounts[k]-j), recv_buf+j+displs[k]); 
    180180          } 
    181181        } 
     
    221221          #pragma omp critical (read_from_buffer) 
    222222          { 
    223             copy(buffer, buffer+min(BUFFER_SIZE, count-j), recv_buf+j+displs[k]); 
     223            copy(buffer, buffer+min(BUFFER_SIZE, recvcounts[k]-j), recv_buf+j+displs[k]); 
    224224          } 
    225225        } 
     
    265265          #pragma omp critical (read_from_buffer) 
    266266          { 
    267             copy(buffer, buffer+min(BUFFER_SIZE, count-j), recv_buf+j+displs[k]); 
     267            copy(buffer, buffer+min(BUFFER_SIZE, recvcounts[k]-j), recv_buf+j+displs[k]); 
    268268          } 
    269269        } 
     
    309309          #pragma omp critical (read_from_buffer) 
    310310          { 
    311             copy(buffer, buffer+min(BUFFER_SIZE, count-j), recv_buf+j+displs[k]); 
     311            copy(buffer, buffer+min(BUFFER_SIZE, recvcounts[k]-j), recv_buf+j+displs[k]); 
    312312          } 
    313313        } 
     
    485485     
    486486 
    487     assert(accumulate(recvcounts, recvcounts+ep_size-1, 0) == displs[ep_size-1]); // Only for contunuous gather. 
     487    assert(accumulate(recvcounts, recvcounts+ep_size-1, 0) == displs[ep_size-1]); // Only for continuous gather. 
    488488 
    489489 
     
    498498      int buffer_size = accumulate(recvcounts+ep_rank, recvcounts+ep_rank+num_ep, 0); 
    499499      local_gather_recvbuf = new void*[datasize*buffer_size]; 
     500      printf("buffersize = %d\n", buffer_size); 
    500501    } 
    501502 
  • XIOS/dev/branch_yushan/src/client_server_mapping.cpp

    r843 r1115  
    6868  int recvSize=displ[nbClient-1]+recvCount[nbClient-1] ; 
    6969  int* recvBuff=new int[recvSize] ; 
    70  
     70   
     71  printf("nbConnectedServer = %d\n", nbConnectedServer); 
     72   
     73  printf("displ = %d, %d, %d, %d, %d, %d, %d, %d\n",  
     74              displ[0], displ[1], displ[2], displ[3], displ[4], displ[5], displ[6], displ[7]); 
     75  printf("recvCount = %d, %d, %d, %d, %d, %d, %d, %d\n",  
     76              recvCount[0], recvCount[1], recvCount[2], recvCount[3], recvCount[4], recvCount[5], recvCount[6], recvCount[7]); 
     77  printf("receSize = %d\n", recvSize); 
     78   
    7179 
    7280  MPI_Allgatherv(sendBuff,nbConnectedServer,MPI_INT,recvBuff,recvCount,displ,MPI_INT,clientIntraComm) ; 
    73   for(int n=0;n<recvSize;n++) clientRes[recvBuff[n]]++ ; 
     81  for(int n=0;n<recvSize;n++)  
     82  { 
     83    recvBuff[n]; 
     84    clientRes[recvBuff[n]]++ ; 
     85  } 
    7486 
    7587  for(int n=0;n<nbConnectedServer;n++) 
  • XIOS/dev/branch_yushan/src/node/context.cpp

    r1103 r1115  
    390390        { 
    391391          server->eventLoop(); 
     392          //printf("server->hasFinished() = %d\n", server->hasFinished()); 
    392393        } 
    393394 
  • XIOS/dev/branch_yushan/src/test/test_complete.f90

    r1109 r1115  
    236236!#################################################################################### 
    237237 
    238     DO ts=1,24*10 
    239     !DO ts=1,24 
     238    !DO ts=1,24*10 
     239    DO ts=1,24 
    240240 
    241241      CALL xios_get_handle("atmosphere",ctx_hdl) 
  • XIOS/dev/branch_yushan/src/test/test_complete_omp.f90

    r1109 r1115  
    181181!!! Initialisation des coordonnes globales et locales pour la grille indexee (1 point sur 2) 
    182182 
    183     nb_pt=ni*nj/2 
    184     ALLOCATE(kindex(nb_pt),field_A_srf(nb_pt,llm)) 
    185     DO i=1,nb_pt 
    186       kindex(i)=2*i-1 
    187     ENDDO 
    188     field_A_srf(1:nb_pt,:)=RESHAPE(field_A_glo(ibegin+1:iend+1:2,jbegin+1:jend+1,:),(/ nb_pt,llm /)) 
    189  
    190   CALL xios_context_initialize("surface",comm) 
    191  
    192   CALL xios_get_handle("surface",ctx_hdl) 
    193   CALL xios_set_current_context(ctx_hdl) 
    194  
    195   CALL xios_define_calendar(type="Gregorian", & 
    196                             start_date=xios_date(2000, 01, 01, 00, 00, 00), & 
    197                             time_origin=xios_date(1999, 01, 01, 15, 00, 00)) 
    198  
    199   CALL xios_set_axis_attr("axis_srf",n_glo=llm ,value=lval) 
    200   CALL xios_set_domain_attr("domain_srf",ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, ni=ni,jbegin=jbegin,nj=nj, type='curvilinear') 
    201   CALL xios_set_domain_attr("domain_srf",data_dim=1, data_ibegin=0, data_ni=nb_pt) 
    202   CALL xios_set_domain_attr("domain_srf",data_i_index=kindex) 
    203   CALL xios_set_domain_attr("domain_srf",lonvalue_2D=lon,latvalue_2D=lat) 
     183!    nb_pt=ni*nj/2 
     184!    ALLOCATE(kindex(nb_pt),field_A_srf(nb_pt,llm)) 
     185!    DO i=1,nb_pt 
     186!      kindex(i)=2*i-1 
     187!    ENDDO 
     188!    field_A_srf(1:nb_pt,:)=RESHAPE(field_A_glo(ibegin+1:iend+1:2,jbegin+1:jend+1,:),(/ nb_pt,llm /)) 
     189 
     190!  CALL xios_context_initialize("surface",comm) 
     191 
     192!  CALL xios_get_handle("surface",ctx_hdl) 
     193!  CALL xios_set_current_context(ctx_hdl) 
     194 
     195!  CALL xios_define_calendar(type="Gregorian", & 
     196!                            start_date=xios_date(2000, 01, 01, 00, 00, 00), & 
     197!                            time_origin=xios_date(1999, 01, 01, 15, 00, 00)) 
     198 
     199!  CALL xios_set_axis_attr("axis_srf",n_glo=llm ,value=lval) 
     200!  CALL xios_set_domain_attr("domain_srf",ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, ni=ni,jbegin=jbegin,nj=nj, type='curvilinear') 
     201!  CALL xios_set_domain_attr("domain_srf",data_dim=1, data_ibegin=0, data_ni=nb_pt) 
     202!  CALL xios_set_domain_attr("domain_srf",data_i_index=kindex) 
     203!  CALL xios_set_domain_attr("domain_srf",lonvalue_2D=lon,latvalue_2D=lat) 
    204204 
    205205!!! Cration d un nouveau champ 
    206206 
    207   CALL xios_get_handle("field_definition",fieldgroup_hdl) 
    208   CALL xios_add_child(fieldgroup_hdl,field_hdl,"field_B_srf") 
     207 ! CALL xios_get_handle("field_definition",fieldgroup_hdl) 
     208!  CALL xios_add_child(fieldgroup_hdl,field_hdl,"field_B_srf") 
    209209 
    210210!!! Heritage des attributs d un autre champ 
    211211 
    212   CALL xios_set_attr(field_hdl,field_ref="field_A_srf",name="field_B_srf") 
     212!  CALL xios_set_attr(field_hdl,field_ref="field_A_srf",name="field_B_srf") 
    213213 
    214214!!! Affectation de ce nouveau champ au fichier avec un nouveau nom 
    215215 
    216   CALL xios_get_handle("output_surface",file_hdl) 
    217   CALL xios_add_child(file_hdl,field_hdl) 
    218   CALL xios_set_attr(field_hdl,field_ref="field_B_srf",name="field_C_srf") 
     216!  CALL xios_get_handle("output_surface",file_hdl) 
     217!  CALL xios_add_child(file_hdl,field_hdl) 
     218!  CALL xios_set_attr(field_hdl,field_ref="field_B_srf",name="field_C_srf") 
    219219 
    220220!!! Definition du timestep 
    221221 
    222   dtime%second=1800 
    223   CALL xios_set_timestep(timestep=dtime) 
     222!  dtime%second=1800 
     223!  CALL xios_set_timestep(timestep=dtime) 
    224224 
    225225!!! Recupration des valeurs des longitudes et de taille des domaines locaux (pour test de fonctionnalit) 
    226226 
    227   ni=0 ; lonvalue(:,:)=0 
    228   CALL xios_get_domain_attr("domain_srf",ni=ni,lonvalue_2D=lonvalue) 
     227!  ni=0 ; lonvalue(:,:)=0 
     228!  CALL xios_get_domain_attr("domain_srf",ni=ni,lonvalue_2D=lonvalue) 
    229229 
    230230  !PRINT *,"ni",ni 
     
    233233!!! Fin de la definition du contexte SRF 
    234234 
    235   CALL xios_close_context_definition() 
    236  
    237   print *, "xios_close_context_definition(surface)"  
     235!  CALL xios_close_context_definition() 
     236 
     237!  print *, "xios_close_context_definition(surface)"  
    238238 
    239239 
     
    242242!#################################################################################### 
    243243 
    244     DO ts=1,24*10 
    245     !DO ts=1,24 
    246  
    247       CALL xios_get_handle("atmosphere",ctx_hdl) 
    248       CALL xios_set_current_context(ctx_hdl) 
     244    !DO ts=1,24*10 
     245    DO ts=1,24 
     246 
     247      !CALL xios_get_handle("atmosphere",ctx_hdl) 
     248      !CALL xios_set_current_context(ctx_hdl) 
    249249 
    250250!!! Mise a jour du pas de temps 
     
    258258!!! On change de contexte 
    259259 
    260       CALL xios_get_handle("surface",ctx_hdl) 
    261       CALL xios_set_current_context(ctx_hdl) 
     260!      CALL xios_get_handle("surface",ctx_hdl) 
     261!      CALL xios_set_current_context(ctx_hdl) 
    262262 
    263263!!! Mise a jour du pas de temps 
    264264 
    265       CALL xios_update_calendar(ts) 
     265 !     CALL xios_update_calendar(ts) 
    266266 
    267267!!! On donne la valeur du champ srf 
    268268 
    269       CALL xios_send_field("field_A_srf",field_A_srf) 
     269 !     CALL xios_send_field("field_A_srf",field_A_srf) 
    270270 
    271271      CALL wait_us(5000) ; 
     
    283283 
    284284 
    285     CALL xios_get_handle("surface",ctx_hdl)  
    286  
    287     CALL xios_set_current_context(ctx_hdl) 
    288  
    289     CALL xios_context_finalize() 
    290  
    291     print *, "xios_context_finalize(surface)"  
    292  
    293      CALL xios_get_handle("atmosphere",ctx_hdl) 
    294  
    295      CALL xios_set_current_context(ctx_hdl) 
     285!    CALL xios_get_handle("surface",ctx_hdl)  
     286 
     287!    CALL xios_set_current_context(ctx_hdl) 
     288 
     289!    CALL xios_context_finalize() 
     290 
     291!    print *, "xios_context_finalize(surface)"  
     292 
     293     !CALL xios_get_handle("atmosphere",ctx_hdl) 
     294 
     295     !CALL xios_set_current_context(ctx_hdl) 
    296296 
    297297     CALL xios_context_finalize() 
     
    308308 
    309309    DEALLOCATE(lon, lat, field_A_atm, lonvalue) 
    310     DEALLOCATE(kindex, field_A_srf) 
     310!    DEALLOCATE(kindex, field_A_srf) 
    311311 
    312312     print *, "Client : xios_finalize " 
  • XIOS/dev/branch_yushan/src/test/test_omp.f90

    r1109 r1115  
    4545    CALL MPI_COMM_RANK(MPI_COMM_WORLD,rank,ierr) 
    4646    CALL MPI_COMM_SIZE(MPI_COMM_WORLD,size,ierr) 
    47     if(rank < size-1) then 
     47    if(rank < size-2) then 
    4848 
    4949    !$omp parallel default(private) 
Note: See TracChangeset for help on using the changeset viewer.