Ignore:
Timestamp:
05/28/18 09:54:32 (6 years ago)
Author:
yushan
Message:

save dev

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_openmp/extern/ep_dev/ep_reduce.cpp

    r1499 r1500  
    6666    ::MPI_Type_get_extent(to_mpi_type(datatype), &lb, &datasize); 
    6767 
    68     int ep_rank = comm.ep_comm_ptr->size_rank_info[0].first; 
    69     int ep_rank_loc = comm.ep_comm_ptr->size_rank_info[1].first; 
    70     int num_ep = comm.ep_comm_ptr->size_rank_info[1].second; 
     68    int ep_rank = comm->ep_comm_ptr->size_rank_info[0].first; 
     69    int ep_rank_loc = comm->ep_comm_ptr->size_rank_info[1].first; 
     70    int num_ep = comm->ep_comm_ptr->size_rank_info[1].second; 
    7171 
    7272    #pragma omp critical (_reduce) 
    73     comm.my_buffer->void_buffer[ep_rank_loc] = const_cast< void* >(sendbuf); 
     73    comm->my_buffer->void_buffer[ep_rank_loc] = const_cast< void* >(sendbuf); 
    7474 
    7575    MPI_Barrier_local(comm); 
     
    7878    { 
    7979 
    80       memcpy(recvbuf, comm.my_buffer->void_buffer[0], datasize * count); 
     80      memcpy(recvbuf, comm->my_buffer->void_buffer[0], datasize * count); 
    8181 
    8282      if(op == MPI_MAX) 
     
    8686          assert(datasize == sizeof(int)); 
    8787          for(int i=1; i<num_ep; i++) 
    88             reduce_max<int>(static_cast<int*>(comm.my_buffer->void_buffer[i]), static_cast<int*>(recvbuf), count); 
     88            reduce_max<int>(static_cast<int*>(comm->my_buffer->void_buffer[i]), static_cast<int*>(recvbuf), count); 
    8989        } 
    9090 
     
    9393          assert(datasize == sizeof(float)); 
    9494          for(int i=1; i<num_ep; i++) 
    95             reduce_max<float>(static_cast<float*>(comm.my_buffer->void_buffer[i]), static_cast<float*>(recvbuf), count); 
     95            reduce_max<float>(static_cast<float*>(comm->my_buffer->void_buffer[i]), static_cast<float*>(recvbuf), count); 
    9696        } 
    9797 
     
    100100          assert(datasize == sizeof(double)); 
    101101          for(int i=1; i<num_ep; i++) 
    102             reduce_max<double>(static_cast<double*>(comm.my_buffer->void_buffer[i]), static_cast<double*>(recvbuf), count); 
     102            reduce_max<double>(static_cast<double*>(comm->my_buffer->void_buffer[i]), static_cast<double*>(recvbuf), count); 
    103103        } 
    104104 
     
    107107          assert(datasize == sizeof(char)); 
    108108          for(int i=1; i<num_ep; i++) 
    109             reduce_max<char>(static_cast<char*>(comm.my_buffer->void_buffer[i]), static_cast<char*>(recvbuf), count); 
     109            reduce_max<char>(static_cast<char*>(comm->my_buffer->void_buffer[i]), static_cast<char*>(recvbuf), count); 
    110110        } 
    111111 
     
    114114          assert(datasize == sizeof(long)); 
    115115          for(int i=1; i<num_ep; i++) 
    116             reduce_max<long>(static_cast<long*>(comm.my_buffer->void_buffer[i]), static_cast<long*>(recvbuf), count); 
     116            reduce_max<long>(static_cast<long*>(comm->my_buffer->void_buffer[i]), static_cast<long*>(recvbuf), count); 
    117117        } 
    118118 
     
    121121          assert(datasize == sizeof(unsigned long)); 
    122122          for(int i=1; i<num_ep; i++) 
    123             reduce_max<unsigned long>(static_cast<unsigned long*>(comm.my_buffer->void_buffer[i]), static_cast<unsigned long*>(recvbuf), count); 
     123            reduce_max<unsigned long>(static_cast<unsigned long*>(comm->my_buffer->void_buffer[i]), static_cast<unsigned long*>(recvbuf), count); 
    124124        } 
    125125 
     
    128128          assert(datasize == sizeof(uint64_t)); 
    129129          for(int i=1; i<num_ep; i++) 
    130             reduce_max<uint64_t>(static_cast<uint64_t*>(comm.my_buffer->void_buffer[i]), static_cast<uint64_t*>(recvbuf), count); 
     130            reduce_max<uint64_t>(static_cast<uint64_t*>(comm->my_buffer->void_buffer[i]), static_cast<uint64_t*>(recvbuf), count); 
    131131        } 
    132132         
     
    135135          assert(datasize == sizeof(long long)); 
    136136          for(int i=1; i<num_ep; i++) 
    137             reduce_max<long long>(static_cast<long long*>(comm.my_buffer->void_buffer[i]), static_cast<long long*>(recvbuf), count); 
     137            reduce_max<long long>(static_cast<long long*>(comm->my_buffer->void_buffer[i]), static_cast<long long*>(recvbuf), count); 
    138138        } 
    139139 
     
    148148          assert(datasize == sizeof(int)); 
    149149          for(int i=1; i<num_ep; i++) 
    150             reduce_min<int>(static_cast<int*>(comm.my_buffer->void_buffer[i]), static_cast<int*>(recvbuf), count); 
     150            reduce_min<int>(static_cast<int*>(comm->my_buffer->void_buffer[i]), static_cast<int*>(recvbuf), count); 
    151151        } 
    152152 
     
    155155          assert(datasize == sizeof(float)); 
    156156          for(int i=1; i<num_ep; i++) 
    157             reduce_min<float>(static_cast<float*>(comm.my_buffer->void_buffer[i]), static_cast<float*>(recvbuf), count); 
     157            reduce_min<float>(static_cast<float*>(comm->my_buffer->void_buffer[i]), static_cast<float*>(recvbuf), count); 
    158158        } 
    159159 
     
    162162          assert(datasize == sizeof(double)); 
    163163          for(int i=1; i<num_ep; i++) 
    164             reduce_min<double>(static_cast<double*>(comm.my_buffer->void_buffer[i]), static_cast<double*>(recvbuf), count); 
     164            reduce_min<double>(static_cast<double*>(comm->my_buffer->void_buffer[i]), static_cast<double*>(recvbuf), count); 
    165165        } 
    166166 
     
    169169          assert(datasize == sizeof(char)); 
    170170          for(int i=1; i<num_ep; i++) 
    171             reduce_min<char>(static_cast<char*>(comm.my_buffer->void_buffer[i]), static_cast<char*>(recvbuf), count); 
     171            reduce_min<char>(static_cast<char*>(comm->my_buffer->void_buffer[i]), static_cast<char*>(recvbuf), count); 
    172172        } 
    173173 
     
    176176          assert(datasize == sizeof(long)); 
    177177          for(int i=1; i<num_ep; i++) 
    178             reduce_min<long>(static_cast<long*>(comm.my_buffer->void_buffer[i]), static_cast<long*>(recvbuf), count); 
     178            reduce_min<long>(static_cast<long*>(comm->my_buffer->void_buffer[i]), static_cast<long*>(recvbuf), count); 
    179179        } 
    180180 
     
    183183          assert(datasize == sizeof(unsigned long)); 
    184184          for(int i=1; i<num_ep; i++) 
    185             reduce_min<unsigned long>(static_cast<unsigned long*>(comm.my_buffer->void_buffer[i]), static_cast<unsigned long*>(recvbuf), count); 
     185            reduce_min<unsigned long>(static_cast<unsigned long*>(comm->my_buffer->void_buffer[i]), static_cast<unsigned long*>(recvbuf), count); 
    186186        } 
    187187 
     
    190190          assert(datasize == sizeof(uint64_t)); 
    191191          for(int i=1; i<num_ep; i++) 
    192             reduce_min<uint64_t>(static_cast<uint64_t*>(comm.my_buffer->void_buffer[i]), static_cast<uint64_t*>(recvbuf), count); 
     192            reduce_min<uint64_t>(static_cast<uint64_t*>(comm->my_buffer->void_buffer[i]), static_cast<uint64_t*>(recvbuf), count); 
    193193        } 
    194194         
     
    197197          assert(datasize == sizeof(long long)); 
    198198          for(int i=1; i<num_ep; i++) 
    199             reduce_min<long long>(static_cast<long long*>(comm.my_buffer->void_buffer[i]), static_cast<long long*>(recvbuf), count); 
     199            reduce_min<long long>(static_cast<long long*>(comm->my_buffer->void_buffer[i]), static_cast<long long*>(recvbuf), count); 
    200200        } 
    201201 
     
    211211          assert(datasize == sizeof(int)); 
    212212          for(int i=1; i<num_ep; i++) 
    213             reduce_sum<int>(static_cast<int*>(comm.my_buffer->void_buffer[i]), static_cast<int*>(recvbuf), count); 
     213            reduce_sum<int>(static_cast<int*>(comm->my_buffer->void_buffer[i]), static_cast<int*>(recvbuf), count); 
    214214        } 
    215215 
     
    218218          assert(datasize == sizeof(float)); 
    219219          for(int i=1; i<num_ep; i++) 
    220             reduce_sum<float>(static_cast<float*>(comm.my_buffer->void_buffer[i]), static_cast<float*>(recvbuf), count); 
     220            reduce_sum<float>(static_cast<float*>(comm->my_buffer->void_buffer[i]), static_cast<float*>(recvbuf), count); 
    221221        } 
    222222 
     
    225225          assert(datasize == sizeof(double)); 
    226226          for(int i=1; i<num_ep; i++) 
    227             reduce_sum<double>(static_cast<double*>(comm.my_buffer->void_buffer[i]), static_cast<double*>(recvbuf), count); 
     227            reduce_sum<double>(static_cast<double*>(comm->my_buffer->void_buffer[i]), static_cast<double*>(recvbuf), count); 
    228228        } 
    229229 
     
    232232          assert(datasize == sizeof(char)); 
    233233          for(int i=1; i<num_ep; i++) 
    234             reduce_sum<char>(static_cast<char*>(comm.my_buffer->void_buffer[i]), static_cast<char*>(recvbuf), count); 
     234            reduce_sum<char>(static_cast<char*>(comm->my_buffer->void_buffer[i]), static_cast<char*>(recvbuf), count); 
    235235        } 
    236236 
     
    239239          assert(datasize == sizeof(long)); 
    240240          for(int i=1; i<num_ep; i++) 
    241             reduce_sum<long>(static_cast<long*>(comm.my_buffer->void_buffer[i]), static_cast<long*>(recvbuf), count); 
     241            reduce_sum<long>(static_cast<long*>(comm->my_buffer->void_buffer[i]), static_cast<long*>(recvbuf), count); 
    242242        } 
    243243 
     
    246246          assert(datasize == sizeof(unsigned long)); 
    247247          for(int i=1; i<num_ep; i++) 
    248             reduce_sum<unsigned long>(static_cast<unsigned long*>(comm.my_buffer->void_buffer[i]), static_cast<unsigned long*>(recvbuf), count); 
     248            reduce_sum<unsigned long>(static_cast<unsigned long*>(comm->my_buffer->void_buffer[i]), static_cast<unsigned long*>(recvbuf), count); 
    249249        } 
    250250 
     
    253253          assert(datasize == sizeof(uint64_t)); 
    254254          for(int i=1; i<num_ep; i++) 
    255             reduce_sum<uint64_t>(static_cast<uint64_t*>(comm.my_buffer->void_buffer[i]), static_cast<uint64_t*>(recvbuf), count); 
     255            reduce_sum<uint64_t>(static_cast<uint64_t*>(comm->my_buffer->void_buffer[i]), static_cast<uint64_t*>(recvbuf), count); 
    256256        } 
    257257         
     
    260260          assert(datasize == sizeof(long long)); 
    261261          for(int i=1; i<num_ep; i++) 
    262             reduce_sum<long long>(static_cast<long long*>(comm.my_buffer->void_buffer[i]), static_cast<long long*>(recvbuf), count); 
     262            reduce_sum<long long>(static_cast<long long*>(comm->my_buffer->void_buffer[i]), static_cast<long long*>(recvbuf), count); 
    263263        } 
    264264 
     
    275275          assert(datasize == sizeof(int)); 
    276276          for(int i=1; i<num_ep; i++) 
    277             reduce_lor<int>(static_cast<int*>(comm.my_buffer->void_buffer[i]), static_cast<int*>(recvbuf), count); 
     277            reduce_lor<int>(static_cast<int*>(comm->my_buffer->void_buffer[i]), static_cast<int*>(recvbuf), count); 
    278278        } 
    279279      } 
     
    288288  { 
    289289 
    290     if(!comm.is_ep && comm.mpi_comm) 
    291     { 
    292       return ::MPI_Reduce(sendbuf, recvbuf, count, to_mpi_type(datatype), to_mpi_op(op), root, to_mpi_comm(comm.mpi_comm)); 
    293     } 
    294  
    295  
    296  
    297     int ep_rank = comm.ep_comm_ptr->size_rank_info[0].first; 
    298     int ep_rank_loc = comm.ep_comm_ptr->size_rank_info[1].first; 
    299     int mpi_rank = comm.ep_comm_ptr->size_rank_info[2].first; 
    300     int ep_size = comm.ep_comm_ptr->size_rank_info[0].second; 
    301     int num_ep = comm.ep_comm_ptr->size_rank_info[1].second; 
    302     int mpi_size = comm.ep_comm_ptr->size_rank_info[2].second; 
    303  
    304     int root_mpi_rank = comm.rank_map->at(root).second; 
    305     int root_ep_loc = comm.rank_map->at(root).first; 
     290    if(!comm->is_ep && comm->mpi_comm) 
     291    { 
     292      return ::MPI_Reduce(sendbuf, recvbuf, count, to_mpi_type(datatype), to_mpi_op(op), root, to_mpi_comm(comm->mpi_comm)); 
     293    } 
     294 
     295 
     296 
     297    int ep_rank = comm->ep_comm_ptr->size_rank_info[0].first; 
     298    int ep_rank_loc = comm->ep_comm_ptr->size_rank_info[1].first; 
     299    int mpi_rank = comm->ep_comm_ptr->size_rank_info[2].first; 
     300    int ep_size = comm->ep_comm_ptr->size_rank_info[0].second; 
     301    int num_ep = comm->ep_comm_ptr->size_rank_info[1].second; 
     302    int mpi_size = comm->ep_comm_ptr->size_rank_info[2].second; 
     303 
     304    int root_mpi_rank = comm->rank_map->at(root).second; 
     305    int root_ep_loc = comm->rank_map->at(root).first; 
    306306 
    307307    ::MPI_Aint datasize, lb; 
     
    326326    if(is_master) 
    327327    { 
    328       ::MPI_Reduce(local_recvbuf, recvbuf, count, to_mpi_type(datatype), to_mpi_op(op), root_mpi_rank, to_mpi_comm(comm.mpi_comm)); 
     328      ::MPI_Reduce(local_recvbuf, recvbuf, count, to_mpi_type(datatype), to_mpi_op(op), root_mpi_rank, to_mpi_comm(comm->mpi_comm)); 
    329329       
    330330    } 
Note: See TracChangeset for help on using the changeset viewer.