Changeset 1642 for XIOS/dev/branch_openmp/extern/src_ep_dev
- Timestamp:
- 01/23/19 10:31:44 (5 years ago)
- Location:
- XIOS/dev/branch_openmp/extern/src_ep_dev
- Files:
-
- 27 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_allgather.cpp
r1539 r1642 92 92 int local_sendcount = num_ep * count; 93 93 94 ::MPI_Allgather(&local_sendcount, 1, to_mpi_type( MPI_INT), mpi_recvcounts, 1, to_mpi_type(MPI_INT), to_mpi_comm(comm->mpi_comm));94 ::MPI_Allgather(&local_sendcount, 1, to_mpi_type(EP_INT), mpi_recvcounts, 1, to_mpi_type(EP_INT), to_mpi_comm(comm->mpi_comm)); 95 95 96 96 mpi_displs[0] = 0; -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_allgatherv.cpp
r1539 r1642 56 56 vector<int>local_displs(num_ep, 0); 57 57 58 MPI_Gather_local(&sendcount, 1, MPI_INT, local_recvcounts.data(), 0, comm);58 MPI_Gather_local(&sendcount, 1, EP_INT, local_recvcounts.data(), 0, comm); 59 59 for(int i=1; i<num_ep; i++) local_displs[i] = local_displs[i-1] + local_recvcounts[i-1]; 60 60 … … 75 75 76 76 int local_sendcount = std::accumulate(local_recvcounts.begin(), local_recvcounts.end(), 0); 77 ::MPI_Allgather(&local_sendcount, 1, to_mpi_type( MPI_INT), mpi_recvcounts.data(), 1, to_mpi_type(MPI_INT), to_mpi_comm(comm->mpi_comm));77 ::MPI_Allgather(&local_sendcount, 1, to_mpi_type(EP_INT), mpi_recvcounts.data(), 1, to_mpi_type(EP_INT), to_mpi_comm(comm->mpi_comm)); 78 78 79 79 for(int i=1; i<mpi_size; i++) -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_allocate.cpp
r1539 r1642 33 33 34 34 int num_ep_max; 35 MPI_Allreduce(&num_ep, &num_ep_max, 1, MPI_INT, MPI_MAX, comm);35 MPI_Allreduce(&num_ep, &num_ep_max, 1, EP_INT, MPI_MAX, comm); 36 36 37 37 assert(num_ep_max > 1); -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_create.cpp
r1539 r1642 73 73 } 74 74 75 ::MPI_Allgather(&num_ep, 1, to_mpi_type( MPI_INT), &recv_num_ep[0], 1, to_mpi_type(MPI_INT), mpi_base_comm);75 ::MPI_Allgather(&num_ep, 1, to_mpi_type(EP_INT), &recv_num_ep[0], 1, to_mpi_type(EP_INT), mpi_base_comm); 76 76 77 77 … … 124 124 for(int j=0; j<recv_num_ep[i]; j++) 125 125 { 126 out_comm_hdls[0]->ep_rank_map->insert(std::pair< int, std::pair<int,int> >(ind, j, i)); 126 //out_comm_hdls[0]->ep_rank_map->insert(std::pair< int, std::pair<int,int> >(ind, j, i)); 127 (*(out_comm_hdls[0]->ep_rank_map))[ind] = std::make_pair(j,i);//->insert(std::pair< int, std::pair<int,int> >(ind, j, i)); 127 128 ind++; 128 129 } -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_declaration.cpp
r1520 r1642 4 4 5 5 ::MPI_Comm MPI_COMM_WORLD_STD = MPI_COMM_WORLD; 6 #undef MPI_COMM_WORLD6 //#undef MPI_COMM_WORLD 7 7 8 8 9 9 ::MPI_Comm MPI_COMM_NULL_STD = MPI_COMM_NULL; 10 #undef MPI_COMM_NULL10 //#undef MPI_COMM_NULL 11 11 12 12 13 13 ::MPI_Request MPI_REQUEST_NULL_STD = MPI_REQUEST_NULL; 14 #undef MPI_REQUEST_NULL14 //#undef MPI_REQUEST_NULL 15 15 16 16 ::MPI_Info MPI_INFO_NULL_STD = MPI_INFO_NULL; 17 #undef MPI_INFO_NULL17 //#undef MPI_INFO_NULL 18 18 19 19 ::MPI_Datatype MPI_INT_STD = MPI_INT; … … 26 26 ::MPI_Datatype MPI_UINT64_T_STD = MPI_UINT64_T; 27 27 ::MPI_Datatype MPI_LONG_LONG_INT_STD = MPI_LONG_LONG_INT; 28 28 ::MPI_Datatype MPI_LONG_LONG_STD = MPI_LONG_LONG; 29 /* 29 30 #undef MPI_INT 30 31 #undef MPI_FLOAT … … 36 37 #undef MPI_UINT64_T 37 38 #undef MPI_LONG_LONG_INT 38 39 */ 39 40 40 41 ::MPI_Op MPI_SUM_STD = MPI_SUM; … … 43 44 ::MPI_Op MPI_LOR_STD = MPI_LOR; 44 45 ::MPI_Op MPI_REPLACE_STD = MPI_REPLACE; 45 46 /* 46 47 #undef MPI_SUM 47 48 #undef MPI_MAX … … 49 50 #undef MPI_LOR 50 51 #undef MPI_REPLACE 51 52 */ 52 53 53 54 // _STD defined in ep_type.cpp … … 62 63 extern ::MPI_Datatype MPI_UINT64_T_STD; 63 64 extern ::MPI_Datatype MPI_LONG_LONG_INT_STD; 65 extern ::MPI_Datatype MPI_LONG_LONG_STD; 66 64 67 65 68 … … 77 80 extern ::MPI_Info MPI_INFO_NULL_STD; 78 81 79 ep_lib::MPI_Datatype MPI_INT = &MPI_INT_STD; 80 ep_lib::MPI_Datatype MPI_FLOAT = &MPI_FLOAT_STD; 81 ep_lib::MPI_Datatype MPI_DOUBLE = &MPI_DOUBLE_STD; 82 ep_lib::MPI_Datatype MPI_CHAR = &MPI_CHAR_STD; 83 ep_lib::MPI_Datatype MPI_LONG = &MPI_LONG_STD; 84 ep_lib::MPI_Datatype MPI_UNSIGNED_LONG = &MPI_UNSIGNED_LONG_STD; 85 ep_lib::MPI_Datatype MPI_UNSIGNED_CHAR = &MPI_UNSIGNED_CHAR_STD; 86 ep_lib::MPI_Datatype MPI_UINT64_T = &MPI_UINT64_T_STD; 87 ep_lib::MPI_Datatype MPI_LONG_LONG_INT = &MPI_LONG_LONG_INT_STD; 88 89 90 ep_lib::MPI_Op MPI_SUM = &MPI_SUM_STD; 91 ep_lib::MPI_Op MPI_MAX = &MPI_MAX_STD; 92 ep_lib::MPI_Op MPI_MIN = &MPI_MIN_STD; 93 ep_lib::MPI_Op MPI_LOR = &MPI_LOR_STD; 94 ep_lib::MPI_Op MPI_REPLACE = &MPI_REPLACE_STD; 95 96 ep_lib::ep_comm EP_COMM_WORLD(&MPI_COMM_WORLD_STD); 97 ep_lib::ep_comm EP_COMM_NULL(&MPI_COMM_NULL_STD); 98 99 ep_lib::MPI_Comm MPI_COMM_WORLD = &EP_COMM_WORLD; 100 ep_lib::MPI_Comm MPI_COMM_NULL = &EP_COMM_NULL; 101 102 //ep_lib::ep_status EP_STATUS_IGNORE(&MPI_STATUS_IGNORE_STD); 103 ep_lib::ep_request EP_REQUEST_NULL(&MPI_REQUEST_NULL_STD); 104 ep_lib::ep_info EP_INFO_NULL(&MPI_INFO_NULL_STD); 105 106 //ep_lib::MPI_Status MPI_STATUS_IGNORE = &EP_STATUS_IGNORE; 107 ep_lib::MPI_Request MPI_REQUEST_NULL = &EP_REQUEST_NULL; 108 ep_lib::MPI_Info MPI_INFO_NULL = &EP_INFO_NULL; 82 ep_lib::MPI_Datatype EP_INT = &MPI_INT_STD; 83 ep_lib::MPI_Datatype EP_FLOAT = &MPI_FLOAT_STD; 84 ep_lib::MPI_Datatype EP_DOUBLE = &MPI_DOUBLE_STD; 85 ep_lib::MPI_Datatype EP_CHAR = &MPI_CHAR_STD; 86 ep_lib::MPI_Datatype EP_LONG = &MPI_LONG_STD; 87 ep_lib::MPI_Datatype EP_UNSIGNED_LONG = &MPI_UNSIGNED_LONG_STD; 88 ep_lib::MPI_Datatype EP_UNSIGNED_CHAR = &MPI_UNSIGNED_CHAR_STD; 89 ep_lib::MPI_Datatype EP_UINT64_T = &MPI_UINT64_T_STD; 90 ep_lib::MPI_Datatype EP_LONG_LONG_INT = &MPI_LONG_LONG_INT_STD; 91 ep_lib::MPI_Datatype EP_LONG_LONG = &MPI_LONG_LONG_STD; 109 92 110 93 111 94 95 ep_lib::MPI_Op EP_SUM = &MPI_SUM_STD; 96 ep_lib::MPI_Op EP_MAX = &MPI_MAX_STD; 97 ep_lib::MPI_Op EP_MIN = &MPI_MIN_STD; 98 ep_lib::MPI_Op EP_LOR = &MPI_LOR_STD; 99 ep_lib::MPI_Op EP_REPLACE = &MPI_REPLACE_STD; 100 101 ep_lib::ep_comm EP_COMM_WORLD_t(&MPI_COMM_WORLD_STD); 102 ep_lib::ep_comm EP_COMM_NULL_t(&MPI_COMM_NULL_STD); 103 104 ep_lib::MPI_Comm EP_COMM_WORLD = &EP_COMM_WORLD_t; 105 ep_lib::MPI_Comm EP_COMM_NULL = &EP_COMM_NULL_t; 106 107 //ep_lib::ep_status EP_STATUS_IGNORE(&MPI_STATUS_IGNORE_STD); 108 ep_lib::ep_request EP_REQUEST_NULL_t(&MPI_REQUEST_NULL_STD); 109 ep_lib::ep_info EP_INFO_NULL_t(&MPI_INFO_NULL_STD); 110 111 //ep_lib::MPI_Status MPI_STATUS_IGNORE = &EP_STATUS_IGNORE; 112 ep_lib::MPI_Request EP_REQUEST_NULL = &EP_REQUEST_NULL_t; 113 ep_lib::MPI_Info EP_INFO_NULL = &EP_INFO_NULL_t; 114 115 116 -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_declaration.hpp
r1520 r1642 1 1 #ifndef EP_DECLARATION_HPP_INCLUDED 2 2 #define EP_DECLARATION_HPP_INCLUDED 3 3 /* 4 4 #undef MPI_INT 5 5 #undef MPI_FLOAT … … 18 18 #undef MPI_REPLACE 19 19 20 #undef MPI_COMM_WORLD20 //#undef MPI_COMM_WORLD 21 21 #undef MPI_COMM_NULL 22 22 … … 24 24 #undef MPI_STATUS_IGNORE 25 25 #undef MPI_INFO_NULL 26 */ 27 extern ep_lib::MPI_Datatype EP_INT; 28 extern ep_lib::MPI_Datatype EP_FLOAT; 29 extern ep_lib::MPI_Datatype EP_DOUBLE; 30 extern ep_lib::MPI_Datatype EP_CHAR; 31 extern ep_lib::MPI_Datatype EP_LONG; 32 extern ep_lib::MPI_Datatype EP_UNSIGNED_LONG; 33 extern ep_lib::MPI_Datatype EP_UNSIGNED_CHAR; 34 extern ep_lib::MPI_Datatype EP_UINT64_T; 35 extern ep_lib::MPI_Datatype EP_LONG_LONG_INT; 36 extern ep_lib::MPI_Datatype EP_LONG_LONG; 26 37 27 extern ep_lib::MPI_Datatype MPI_INT;28 extern ep_lib::MPI_Datatype MPI_FLOAT;29 extern ep_lib::MPI_Datatype MPI_DOUBLE;30 extern ep_lib::MPI_Datatype MPI_CHAR;31 extern ep_lib::MPI_Datatype MPI_LONG;32 extern ep_lib::MPI_Datatype MPI_UNSIGNED_LONG;33 extern ep_lib::MPI_Datatype MPI_UNSIGNED_CHAR;34 extern ep_lib::MPI_Datatype MPI_UINT64_T;35 extern ep_lib::MPI_Datatype MPI_LONG_LONG_INT;36 38 37 extern ep_lib::MPI_Op MPI_SUM;38 extern ep_lib::MPI_Op MPI_MAX;39 extern ep_lib::MPI_Op MPI_MIN;40 extern ep_lib::MPI_Op MPI_LOR;41 extern ep_lib::MPI_Op MPI_REPLACE;39 extern ep_lib::MPI_Op EP_SUM; 40 extern ep_lib::MPI_Op EP_MAX; 41 extern ep_lib::MPI_Op EP_MIN; 42 extern ep_lib::MPI_Op EP_LOR; 43 extern ep_lib::MPI_Op EP_REPLACE; 42 44 43 extern ep_lib::MPI_Comm MPI_COMM_WORLD;44 extern ep_lib::MPI_Comm MPI_COMM_NULL;45 extern ep_lib::MPI_Comm EP_COMM_WORLD; 46 extern ep_lib::MPI_Comm EP_COMM_NULL; 45 47 46 extern ep_lib::MPI_Status MPI_STATUS_IGNORE; 47 extern ep_lib::MPI_Request MPI_REQUEST_NULL; 48 extern ep_lib::MPI_Info MPI_INFO_NULL; 49 48 extern ep_lib::MPI_Status EP_STATUS_IGNORE; 49 extern ep_lib::MPI_Request EP_REQUEST_NULL; 50 extern ep_lib::MPI_Info EP_INFO_NULL; 50 51 51 52 #endif // EP_DECLARATION_HPP_INCLUDED -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_exscan.cpp
r1540 r1642 78 78 MPI_Barrier_local(comm); 79 79 80 if(op == MPI_SUM)81 { 82 if(datatype == MPI_INT )80 if(op == EP_SUM) 81 { 82 if(datatype == EP_INT ) 83 83 { 84 84 assert(datasize == sizeof(int)); … … 87 87 } 88 88 89 else if(datatype == MPI_FLOAT )89 else if(datatype == EP_FLOAT ) 90 90 { 91 91 assert(datasize == sizeof(float)); … … 95 95 96 96 97 else if(datatype == MPI_DOUBLE )97 else if(datatype == EP_DOUBLE ) 98 98 { 99 99 assert(datasize == sizeof(double)); … … 102 102 } 103 103 104 else if(datatype == MPI_CHAR )104 else if(datatype == EP_CHAR ) 105 105 { 106 106 assert(datasize == sizeof(char)); … … 109 109 } 110 110 111 else if(datatype == MPI_LONG )111 else if(datatype == EP_LONG ) 112 112 { 113 113 assert(datasize == sizeof(long)); … … 116 116 } 117 117 118 else if(datatype == MPI_UNSIGNED_LONG )118 else if(datatype == EP_UNSIGNED_LONG ) 119 119 { 120 120 assert(datasize == sizeof(unsigned long)); … … 123 123 } 124 124 125 else if(datatype == MPI_LONG_LONG_INT )125 else if(datatype == EP_LONG_LONG_INT ) 126 126 { 127 127 assert(datasize == sizeof(long long int)); … … 139 139 } 140 140 141 else if(op == MPI_MAX)142 { 143 if(datatype == MPI_INT )141 else if(op == EP_MAX) 142 { 143 if(datatype == EP_INT ) 144 144 { 145 145 assert(datasize == sizeof(int)); … … 148 148 } 149 149 150 else if(datatype == MPI_FLOAT )150 else if(datatype == EP_FLOAT ) 151 151 { 152 152 assert(datasize == sizeof(float)); … … 155 155 } 156 156 157 else if(datatype == MPI_DOUBLE )157 else if(datatype == EP_DOUBLE ) 158 158 { 159 159 assert(datasize == sizeof(double)); … … 162 162 } 163 163 164 else if(datatype == MPI_CHAR )164 else if(datatype == EP_CHAR ) 165 165 { 166 166 assert(datasize == sizeof(char)); … … 169 169 } 170 170 171 else if(datatype == MPI_LONG )171 else if(datatype == EP_LONG ) 172 172 { 173 173 assert(datasize == sizeof(long)); … … 176 176 } 177 177 178 else if(datatype == MPI_UNSIGNED_LONG )178 else if(datatype == EP_UNSIGNED_LONG ) 179 179 { 180 180 assert(datasize == sizeof(unsigned long)); … … 183 183 } 184 184 185 else if(datatype == MPI_LONG_LONG_INT )185 else if(datatype == EP_LONG_LONG_INT ) 186 186 { 187 187 assert(datasize == sizeof(long long int)); … … 197 197 } 198 198 199 else if(op == MPI_MIN)200 { 201 if(datatype == MPI_INT )199 else if(op == EP_MIN) 200 { 201 if(datatype == EP_INT ) 202 202 { 203 203 assert(datasize == sizeof(int)); … … 206 206 } 207 207 208 else if(datatype == MPI_FLOAT )208 else if(datatype == EP_FLOAT ) 209 209 { 210 210 assert(datasize == sizeof(float)); … … 213 213 } 214 214 215 else if(datatype == MPI_DOUBLE )215 else if(datatype == EP_DOUBLE ) 216 216 { 217 217 assert(datasize == sizeof(double)); … … 220 220 } 221 221 222 else if(datatype == MPI_CHAR )222 else if(datatype == EP_CHAR ) 223 223 { 224 224 assert(datasize == sizeof(char)); … … 227 227 } 228 228 229 else if(datatype == MPI_LONG )229 else if(datatype == EP_LONG ) 230 230 { 231 231 assert(datasize == sizeof(long)); … … 234 234 } 235 235 236 else if(datatype == MPI_UNSIGNED_LONG )236 else if(datatype == EP_UNSIGNED_LONG ) 237 237 { 238 238 assert(datasize == sizeof(unsigned long)); … … 241 241 } 242 242 243 else if(datatype == MPI_LONG_LONG_INT )243 else if(datatype == EP_LONG_LONG_INT ) 244 244 { 245 245 assert(datasize == sizeof(long long int)); -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_finalize.cpp
r1539 r1642 9 9 int MPI_Finalize() 10 10 { 11 #pragma omp master11 //pragma omp master 12 12 { 13 13 printf("calling EP Finalize\n"); -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_fortran.cpp
r1520 r1642 8 8 9 9 10 namespace ep_lib11 {10 //namespace ep_lib 11 //{ 12 12 13 void* EP_Comm_c2f( MPI_Comm comm)13 void* EP_Comm_c2f(ep_lib::MPI_Comm comm) 14 14 { 15 15 Debug("MPI_Comm_c2f"); 16 void* fint = new ::MPI_Fint;16 void* fint = new MPI_Fint; 17 17 #ifdef _intelmpi 18 *static_cast< ::MPI_Fint*>(fint) = (::MPI_Fint)(to_mpi_comm(comm->mpi_comm)); 18 //*static_cast< ::MPI_Fint*>(fint) = (::MPI_Fint)(to_mpi_comm(comm->mpi_comm)); 19 *static_cast< MPI_Fint*>(fint) = MPI_Comm_c2f(to_mpi_comm(comm->mpi_comm)); 19 20 #elif _openmpi 20 *static_cast< ::MPI_Fint*>(fint) = MPI_Comm_c2f(to_mpi_comm(comm->mpi_comm));21 *static_cast< MPI_Fint*>(fint) = MPI_Comm_c2f(to_mpi_comm(comm->mpi_comm)); 21 22 #endif 22 23 23 std::map<std::pair< ::MPI_Fint, int>,MPI_Comm > ::iterator it;24 std::map<std::pair< MPI_Fint, int>, ep_lib::MPI_Comm > ::iterator it; 24 25 25 26 #pragma omp critical (fc_comm_map) 26 27 { 27 it = fc_comm_map.find(std::make_pair(*static_cast< ::MPI_Fint*>(fint), omp_get_thread_num()));28 if(it == fc_comm_map.end())28 it = ep_lib::fc_comm_map.find(std::make_pair(*static_cast< MPI_Fint*>(fint), omp_get_thread_num())); 29 if(it == ep_lib::fc_comm_map.end()) 29 30 { 30 fc_comm_map.insert(std::make_pair( std::make_pair( *static_cast< ::MPI_Fint*>(fint), omp_get_thread_num()) , comm));31 printf("EP_Comm_c2f : MAP %p insert: %d, %d, %p\n", & fc_comm_map, *static_cast< ::MPI_Fint*>(fint), omp_get_thread_num(), comm->ep_comm_ptr);31 ep_lib::fc_comm_map.insert(std::make_pair( std::make_pair( *static_cast< MPI_Fint*>(fint), omp_get_thread_num()) , comm)); 32 printf("EP_Comm_c2f : MAP %p insert: %d, %d, %p\n", &(ep_lib::fc_comm_map), *static_cast< MPI_Fint*>(fint), omp_get_thread_num(), comm->ep_comm_ptr); 32 33 } 33 34 } … … 38 39 } 39 40 40 MPI_Comm EP_Comm_f2c(void* comm)41 ep_lib::MPI_Comm EP_Comm_f2c(void* comm) 41 42 { 42 43 Debug("MPI_Comm_f2c"); 43 44 44 45 45 std::map<std::pair< ::MPI_Fint, int>,MPI_Comm > ::iterator it;46 std::map<std::pair< MPI_Fint, int>, ep_lib::MPI_Comm > ::iterator it; 46 47 47 48 #pragma omp critical (fc_comm_map) 48 it = fc_comm_map.find(std::make_pair(*static_cast< ::MPI_Fint*>(comm), omp_get_thread_num()));49 it = ep_lib::fc_comm_map.find(std::make_pair(*static_cast< MPI_Fint*>(comm), omp_get_thread_num())); 49 50 50 if(it != fc_comm_map.end())51 if(it != ep_lib::fc_comm_map.end()) 51 52 { 52 MPI_Comm comm_ptr;53 ep_lib::MPI_Comm comm_ptr; 53 54 comm_ptr = it->second; 54 printf("EP_Comm_f2c : MAP %p find: %d, %d, %p\n", & fc_comm_map, it->first.first, it->first.second, comm_ptr->ep_comm_ptr);55 printf("EP_Comm_f2c : MAP %p find: %d, %d, %p\n", &(ep_lib::fc_comm_map), it->first.first, it->first.second, comm_ptr->ep_comm_ptr); 55 56 return comm_ptr; 56 57 } … … 58 59 59 60 61 MPI_Comm *base_comm = new MPI_Comm; 60 62 #ifdef _intelmpi 61 ::MPI_Comm *base_comm = new ::MPI_Comm; 62 *base_comm = (::MPI_Comm)(*static_cast< ::MPI_Fint*>(comm)); 63 *base_comm = (MPI_Comm)(*static_cast< MPI_Fint*>(comm)); 63 64 #elif _openmpi 64 ::MPI_Comm *base_comm = ::MPI_Comm_f2c(*static_cast< ::MPI_Fint*>(comm));65 *base_comm = MPI_Comm_f2c(*static_cast< MPI_Fint*>(comm)); 65 66 #endif 66 67 67 if(*base_comm != to_mpi_comm( MPI_COMM_NULL->mpi_comm))68 if(*base_comm != to_mpi_comm(EP_COMM_NULL->mpi_comm)) 68 69 { 69 70 if(omp_get_thread_num() == 0) 70 71 { 71 72 int num_ep = omp_get_num_threads(); 72 MPI_Comm *new_comm;73 MPI_Info info;74 MPI_Comm_create_endpoints(base_comm, num_ep, info, new_comm);75 passage = new_comm;73 ep_lib::MPI_Comm *new_comm; 74 ep_lib::MPI_Info info; 75 ep_lib::MPI_Comm_create_endpoints(base_comm, num_ep, info, new_comm); 76 ep_lib::passage = new_comm; 76 77 } 77 78 #pragma omp barrier 78 79 79 MPI_Comm return_comm =passage[omp_get_thread_num()];80 ep_lib::MPI_Comm return_comm = ep_lib::passage[omp_get_thread_num()]; 80 81 return return_comm; 81 82 82 83 } 83 return MPI_COMM_NULL;84 return EP_COMM_NULL; 84 85 85 86 } 86 87 87 }88 //} 88 89 89 90 -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_gatherv.cpp
r1539 r1642 87 87 } 88 88 89 MPI_Bcast(recvcounts, ep_size, MPI_INT, root, comm);90 MPI_Bcast(displs, ep_size, MPI_INT, root, comm);89 MPI_Bcast(recvcounts, ep_size, EP_INT, root, comm); 90 MPI_Bcast(displs, ep_size, EP_INT, root, comm); 91 91 92 if(mpi_rank == root_mpi_rank) MPI_Gather_local(&sendcount, 1, MPI_INT, local_recvcounts.data(), root_ep_loc, comm);93 else MPI_Gather_local(&sendcount, 1, MPI_INT, local_recvcounts.data(), 0, comm);92 if(mpi_rank == root_mpi_rank) MPI_Gather_local(&sendcount, 1, EP_INT, local_recvcounts.data(), root_ep_loc, comm); 93 else MPI_Gather_local(&sendcount, 1, EP_INT, local_recvcounts.data(), 0, comm); 94 94 95 95 -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_intercomm.cpp
r1556 r1642 33 33 } 34 34 35 MPI_Bcast(mpi_rank_of_leader, 2, MPI_INT, local_leader, local_comm);35 MPI_Bcast(mpi_rank_of_leader, 2, EP_INT, local_leader, local_comm); 36 36 37 37 if(mpi_rank_of_leader[0] != mpi_rank_of_leader[1]) … … 86 86 MPI_Comm_rank(peer_comm, &local_leader_rank_in_peer); 87 87 ::MPI_Comm_rank(to_mpi_comm(peer_comm->mpi_comm), &local_leader_rank_in_peer_mpi); 88 ::MPI_Comm_rank(to_mpi_comm( MPI_COMM_WORLD->mpi_comm), &local_leader_rank_in_world);88 ::MPI_Comm_rank(to_mpi_comm(EP_COMM_WORLD->mpi_comm), &local_leader_rank_in_world); 89 89 90 90 send_quadruple[0] = ep_size; … … 99 99 if(remote_leader > local_leader_rank_in_peer) 100 100 { 101 MPI_Isend(send_quadruple, 4, MPI_INT, remote_leader, tag, peer_comm, &request);101 MPI_Isend(send_quadruple, 4, EP_INT, remote_leader, tag, peer_comm, &request); 102 102 MPI_Wait(&request, &status); 103 103 104 MPI_Irecv(recv_quadruple, 4, MPI_INT, remote_leader, tag, peer_comm, &request);104 MPI_Irecv(recv_quadruple, 4, EP_INT, remote_leader, tag, peer_comm, &request); 105 105 MPI_Wait(&request, &status); 106 106 } 107 107 else 108 108 { 109 MPI_Irecv(recv_quadruple, 4, MPI_INT, remote_leader, tag, peer_comm, &request);109 MPI_Irecv(recv_quadruple, 4, EP_INT, remote_leader, tag, peer_comm, &request); 110 110 MPI_Wait(&request, &status); 111 111 112 MPI_Isend(send_quadruple, 4, MPI_INT, remote_leader, tag, peer_comm, &request);112 MPI_Isend(send_quadruple, 4, EP_INT, remote_leader, tag, peer_comm, &request); 113 113 MPI_Wait(&request, &status); 114 114 } … … 123 123 } 124 124 125 MPI_Bcast(send_quadruple, 4, MPI_INT, local_leader, local_comm);126 MPI_Bcast(recv_quadruple, 4, MPI_INT, local_leader, local_comm);125 MPI_Bcast(send_quadruple, 4, EP_INT, local_leader, local_comm); 126 MPI_Bcast(recv_quadruple, 4, EP_INT, local_leader, local_comm); 127 127 128 128 if(!is_local_leader) … … 152 152 153 153 int rank_in_world; 154 ::MPI_Comm_rank(to_mpi_comm( MPI_COMM_WORLD->mpi_comm), &rank_in_world);154 ::MPI_Comm_rank(to_mpi_comm(EP_COMM_WORLD->mpi_comm), &rank_in_world); 155 155 156 156 int *ranks_in_world_local = new int[ep_size]; 157 157 int *ranks_in_world_remote = new int[remote_ep_size]; 158 158 159 MPI_Allgather(&rank_in_world, 1, MPI_INT, ranks_in_world_local, 1, MPI_INT, local_comm);159 MPI_Allgather(&rank_in_world, 1, EP_INT, ranks_in_world_local, 1, EP_INT, local_comm); 160 160 161 161 if(is_local_leader) … … 166 166 if(remote_leader > local_leader_rank_in_peer) 167 167 { 168 MPI_Isend(ranks_in_world_local, ep_size, MPI_INT, remote_leader, tag, peer_comm, &request);168 MPI_Isend(ranks_in_world_local, ep_size, EP_INT, remote_leader, tag, peer_comm, &request); 169 169 MPI_Wait(&request, &status); 170 170 171 MPI_Irecv(ranks_in_world_remote, remote_ep_size, MPI_INT, remote_leader, tag, peer_comm, &request);171 MPI_Irecv(ranks_in_world_remote, remote_ep_size, EP_INT, remote_leader, tag, peer_comm, &request); 172 172 MPI_Wait(&request, &status); 173 173 } 174 174 else 175 175 { 176 MPI_Irecv(ranks_in_world_remote, remote_ep_size, MPI_INT, remote_leader, tag, peer_comm, &request);176 MPI_Irecv(ranks_in_world_remote, remote_ep_size, EP_INT, remote_leader, tag, peer_comm, &request); 177 177 MPI_Wait(&request, &status); 178 178 179 MPI_Isend(ranks_in_world_local, ep_size, MPI_INT, remote_leader, tag, peer_comm, &request);179 MPI_Isend(ranks_in_world_local, ep_size, EP_INT, remote_leader, tag, peer_comm, &request); 180 180 MPI_Wait(&request, &status); 181 181 } … … 185 185 } 186 186 187 MPI_Bcast(ranks_in_world_remote, remote_ep_size, MPI_INT, local_leader, local_comm);187 MPI_Bcast(ranks_in_world_remote, remote_ep_size, EP_INT, local_leader, local_comm); 188 188 189 189 #ifdef _showinfo … … 313 313 int *mpi_rank_list = new int[mpi_size]; 314 314 315 ::MPI_Allgather(&ownership, 1, to_mpi_type( MPI_INT), ownership_list, 1, to_mpi_type(MPI_INT), to_mpi_comm(local_comm->mpi_comm));316 ::MPI_Allgather(&mpi_rank, 1, to_mpi_type( MPI_INT), mpi_rank_list, 1, to_mpi_type(MPI_INT), to_mpi_comm(local_comm->mpi_comm));315 ::MPI_Allgather(&ownership, 1, to_mpi_type(EP_INT), ownership_list, 1, to_mpi_type(EP_INT), to_mpi_comm(local_comm->mpi_comm)); 316 ::MPI_Allgather(&mpi_rank, 1, to_mpi_type(EP_INT), mpi_rank_list, 1, to_mpi_type(EP_INT), to_mpi_comm(local_comm->mpi_comm)); 317 317 318 318 … … 347 347 } 348 348 349 ::MPI_Bcast(&local_leader_rank_in_extracted_comm, 1, to_mpi_type( MPI_INT), local_comm->ep_rank_map->at(local_leader).second, to_mpi_comm(local_comm->mpi_comm));349 ::MPI_Bcast(&local_leader_rank_in_extracted_comm, 1, to_mpi_type(EP_INT), local_comm->ep_rank_map->at(local_leader).second, to_mpi_comm(local_comm->mpi_comm)); 350 350 351 351 ::MPI_Comm *intracomm = new ::MPI_Comm; 352 bool is_real_involved = ownership && extracted_comm != to_mpi_comm( MPI_COMM_NULL->mpi_comm);352 bool is_real_involved = ownership && extracted_comm != to_mpi_comm(EP_COMM_NULL->mpi_comm); 353 353 354 354 if(is_real_involved) … … 489 489 int *remote_rank_info = new int[2*remote_ep_size]; 490 490 491 MPI_Allgather(rank_info, 2, MPI_INT, local_rank_info, 2, MPI_INT, local_comm);491 MPI_Allgather(rank_info, 2, EP_INT, local_rank_info, 2, EP_INT, local_comm); 492 492 493 493 if(is_local_leader) … … 498 498 if(priority) 499 499 { 500 MPI_Isend(local_rank_info, 2*ep_size, MPI_INT, remote_leader, tag, peer_comm, &request);500 MPI_Isend(local_rank_info, 2*ep_size, EP_INT, remote_leader, tag, peer_comm, &request); 501 501 MPI_Wait(&request, &status); 502 502 503 MPI_Irecv(remote_rank_info, 2*remote_ep_size, MPI_INT, remote_leader, tag, peer_comm, &request);503 MPI_Irecv(remote_rank_info, 2*remote_ep_size, EP_INT, remote_leader, tag, peer_comm, &request); 504 504 MPI_Wait(&request, &status); 505 505 } 506 506 else 507 507 { 508 MPI_Irecv(remote_rank_info, 2*remote_ep_size, MPI_INT, remote_leader, tag, peer_comm, &request);509 MPI_Wait(&request, &status); 510 511 MPI_Isend(local_rank_info, 2*ep_size, MPI_INT, remote_leader, tag, peer_comm, &request);512 MPI_Wait(&request, &status); 513 } 514 } 515 516 MPI_Bcast(remote_rank_info, 2*remote_ep_size, MPI_INT, local_leader, local_comm);508 MPI_Irecv(remote_rank_info, 2*remote_ep_size, EP_INT, remote_leader, tag, peer_comm, &request); 509 MPI_Wait(&request, &status); 510 511 MPI_Isend(local_rank_info, 2*ep_size, EP_INT, remote_leader, tag, peer_comm, &request); 512 MPI_Wait(&request, &status); 513 } 514 } 515 516 MPI_Bcast(remote_rank_info, 2*remote_ep_size, EP_INT, local_leader, local_comm); 517 517 518 518 for(int i=0; i<remote_ep_size; i++) … … 537 537 } 538 538 */ 539 539 //MPI_Barrier(*newintercomm); 540 //MPI_Barrier(*newintercomm); 541 //MPI_Barrier(*newintercomm); 540 542 541 543 } -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_lib.cpp
r1540 r1642 131 131 bool valid_type(MPI_Datatype datatype) 132 132 { 133 if( datatype == MPI_INT134 || datatype == MPI_FLOAT135 || datatype == MPI_DOUBLE136 || datatype == MPI_CHAR137 || datatype == MPI_LONG138 || datatype == MPI_UNSIGNED_LONG139 || datatype == MPI_LONG_LONG)133 if( datatype == EP_INT 134 || datatype == EP_FLOAT 135 || datatype == EP_DOUBLE 136 || datatype == EP_CHAR 137 || datatype == EP_LONG 138 || datatype == EP_UNSIGNED_LONG 139 || datatype == EP_LONG_LONG) 140 140 { 141 141 return true; … … 148 148 bool valid_op(MPI_Op op) 149 149 { 150 if( op == MPI_MAX151 || op == MPI_MIN152 || op == MPI_SUM153 || op == MPI_LOR)150 if( op == EP_MAX 151 || op == EP_MIN 152 || op == EP_SUM 153 || op == EP_LOR) 154 154 { 155 155 return true; -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_lib.hpp
r1539 r1642 51 51 int MPI_Imrecv(void *buf, int count, MPI_Datatype datatype, MPI_Message *message, MPI_Request *request); 52 52 53 int my_recv (void *buf, int count, MPI_Datatype datatype, int src, int tag, MPI_Comm comm, MPI_Status *status); 54 int my_irecv (void *buf, int count, MPI_Datatype datatype, int src, int tag, MPI_Comm comm, MPI_Request *request); 53 55 54 56 int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status); 55 57 int MPI_Testall(int count, MPI_Request *array_of_requests, int *flag, MPI_Status *array_of_statuses); 56 58 59 int my_test(MPI_Request *request, int *flag, MPI_Status *status); 60 int my_testall(int count, MPI_Request *array_of_requests, int *flag, MPI_Status *array_of_statuses); 61 57 62 int MPI_Wait(MPI_Request *request, MPI_Status *status); 58 63 int MPI_Waitall(int count, MPI_Request *array_of_requests, MPI_Status *array_of_statuses); 59 64 65 int my_wait(MPI_Request *request, MPI_Status *status); 66 int my_waitall(int count, MPI_Request *array_of_requests, MPI_Status *array_of_statuses); 60 67 61 68 int MPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status); -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_lib_fortran.hpp
r1369 r1642 4 4 #include "ep_type.hpp" 5 5 6 namespace ep_lib7 {6 //namespace ep_lib 7 //{ 8 8 9 void* EP_Comm_c2f( MPI_Comm comm);10 MPI_Comm EP_Comm_f2c(void* comm);11 }9 void* EP_Comm_c2f(ep_lib::MPI_Comm comm); 10 ep_lib::MPI_Comm EP_Comm_f2c(void* comm); 11 //} 12 12 13 13 -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_merge.cpp
r1539 r1642 36 36 int sum_high; 37 37 38 MPI_Allreduce(&int_high, &sum_high, 1, MPI_INT, MPI_SUM, *newintracomm);38 MPI_Allreduce(&int_high, &sum_high, 1, EP_INT, EP_SUM, *newintracomm); 39 39 40 40 if(sum_high==0 || sum_high==ep_size+remote_ep_size) … … 55 55 56 56 57 MPI_Allgather(my_triple, 3, MPI_INT, my_triple_list, 3, MPI_INT, *newintracomm);57 MPI_Allgather(my_triple, 3, EP_INT, my_triple_list, 3, EP_INT, *newintracomm); 58 58 59 59 -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_message.cpp
r1539 r1642 147 147 { 148 148 Debug("Message probing for intracomm\n"); 149 149 /* 150 150 #pragma omp critical (_mpi_call) 151 151 { … … 158 158 } 159 159 160 160 */ 161 ::MPI_Improbe(MPI_ANY_SOURCE, MPI_ANY_TAG, to_mpi_comm(comm->mpi_comm), &flag, &message, &status); 162 161 163 if(flag) 162 164 { -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_mpi.hpp
r1520 r1642 1 1 #ifndef EP_MPI_HPP_INCLUDED 2 2 #define EP_MPI_HPP_INCLUDED 3 3 #ifdef _usingEP 4 4 #include "ep_type.hpp" 5 5 #endif 6 6 MPI_Datatype to_mpi_type(ep_lib::MPI_Datatype type); 7 7 MPI_Op to_mpi_op(ep_lib::MPI_Op op); -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_probe.cpp
r1539 r1642 68 68 *flag = false; 69 69 70 Message_Check(comm);71 72 #pragma omp flush73 74 70 #pragma omp critical (_query) 75 71 for(Message_list::iterator it = comm->ep_comm_ptr->message_queue->begin(); it!= comm->ep_comm_ptr->message_queue->end(); ++it) … … 98 94 } 99 95 } 96 if(*flag) return 0; 97 98 Message_Check(comm); 99 100 #pragma omp flush 101 102 #pragma omp critical (_query) 103 for(Message_list::iterator it = comm->ep_comm_ptr->message_queue->begin(); it!= comm->ep_comm_ptr->message_queue->end(); ++it) 104 { 105 bool src_matched = src<0? true: (*it)->ep_src == src; 106 bool tag_matched = tag<0? true: (*it)->ep_tag == tag; 107 108 if(src_matched && tag_matched) 109 { 110 Debug("find message\n"); 111 112 status->mpi_status = new ::MPI_Status(*static_cast< ::MPI_Status*>((*it)->mpi_status)); 113 status->ep_src = (*it)->ep_src; 114 status->ep_tag = (*it)->ep_tag; 115 116 if(comm->is_intercomm) 117 { 118 for(INTER_RANK_MAP::iterator iter = comm->inter_rank_map->begin(); iter != comm->inter_rank_map->end(); iter++) 119 { 120 if(iter->second == (*it)->ep_src) status->ep_src=iter->first; 121 } 122 } 123 124 *flag = true; 125 break; 126 } 127 } 128 if(*flag) return 0; 100 129 } 101 130 … … 129 158 *flag = false; 130 159 131 Message_Check(comm);132 133 #pragma omp flush134 135 160 #pragma omp critical (_query) 136 161 if(! comm->ep_comm_ptr->message_queue->empty()) … … 179 204 } 180 205 } 206 207 if(*flag) return 0; 208 209 Message_Check(comm); 210 211 #pragma omp flush 212 213 #pragma omp critical (_query) 214 if(! comm->ep_comm_ptr->message_queue->empty()) 215 { 216 for(Message_list::iterator it = comm->ep_comm_ptr->message_queue->begin(); it!= comm->ep_comm_ptr->message_queue->end(); ++it) 217 { 218 219 bool src_matched = src<0? true: (*it)->ep_src == src; 220 bool tag_matched = tag<0? true: (*it)->ep_tag == tag; 221 222 if(src_matched && tag_matched) 223 { 224 *flag = true; 225 226 status->mpi_status = new ::MPI_Status(*static_cast< ::MPI_Status*>((*it)->mpi_status)); 227 memcheck("new "<< status->mpi_status << " : in ep_lib::MPI_Improbe, status->mpi_status = new ::MPI_Status"); 228 status->ep_src = (*it)->ep_src; 229 status->ep_tag = (*it)->ep_tag; 230 231 (*message)->mpi_message = new ::MPI_Message(*static_cast< ::MPI_Message*>((*it)->mpi_message)); 232 memcheck("new "<< (*message)->mpi_message <<" : in ep_lib::MPI_Improbe, (*message)->mpi_message = new ::MPI_Message"); 233 (*message)->ep_src = (*it)->ep_src; 234 (*message)->ep_tag = (*it)->ep_tag; 235 236 237 #pragma omp critical (_query2) 238 { 239 memcheck("delete "<< (*it)->mpi_message <<" : in ep_lib::Message_Check, delete (*it)->mpi_message"); 240 memcheck("delete "<< (*it)->mpi_status <<" : in ep_lib::Message_Check, delete (*it)->mpi_status"); 241 memcheck("delete "<< (*it) <<" : in ep_lib::Message_Check, delete (*it)"); 242 243 244 delete (*it)->mpi_message; 245 delete (*it)->mpi_status; 246 delete *it; 247 248 249 comm->ep_comm_ptr->message_queue->erase(it); 250 memcheck("message_queue["<<mpi_rank<<","<<ep_rank_loc<<"]->size = "<<comm->ep_comm_ptr->message_queue->size()); 251 #pragma omp flush 252 } 253 254 break; 255 } 256 257 } 258 } 259 260 if(*flag) return 0; 261 181 262 } 182 263 -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_recv.cpp
r1539 r1642 22 22 int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int src, int tag, MPI_Comm comm, MPI_Status *status) 23 23 { 24 25 24 if(!comm->is_ep) return MPI_Recv_mpi(buf, count, datatype, src, tag, comm, status); 26 25 -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_reduce.cpp
r1540 r1642 80 80 memcpy(recvbuf, comm->my_buffer->void_buffer[0], datasize * count); 81 81 82 if(op == MPI_MAX)83 { 84 if(datatype == MPI_INT)82 if(op == EP_MAX) 83 { 84 if(datatype == EP_INT) 85 85 { 86 86 assert(datasize == sizeof(int)); … … 96 96 } 97 97 98 else if(datatype == MPI_DOUBLE)98 else if(datatype == EP_DOUBLE) 99 99 { 100 100 assert(datasize == sizeof(double)); … … 103 103 } 104 104 105 else if(datatype == MPI_CHAR)105 else if(datatype == EP_CHAR) 106 106 { 107 107 assert(datasize == sizeof(char)); … … 110 110 } 111 111 112 else if(datatype == MPI_LONG)112 else if(datatype == EP_LONG) 113 113 { 114 114 assert(datasize == sizeof(long)); … … 117 117 } 118 118 119 else if(datatype == MPI_UNSIGNED_LONG)119 else if(datatype == EP_UNSIGNED_LONG) 120 120 { 121 121 assert(datasize == sizeof(unsigned long)); … … 124 124 } 125 125 126 else if(datatype == MPI_LONG_LONG_INT)126 else if(datatype == EP_LONG_LONG_INT) 127 127 { 128 128 assert(datasize == sizeof(long long)); … … 139 139 } 140 140 141 else if(op == MPI_MIN)142 { 143 if(datatype == MPI_INT)141 else if(op == EP_MIN) 142 { 143 if(datatype ==EP_INT) 144 144 { 145 145 assert(datasize == sizeof(int)); … … 155 155 } 156 156 157 else if(datatype == MPI_DOUBLE)157 else if(datatype == EP_DOUBLE) 158 158 { 159 159 assert(datasize == sizeof(double)); … … 162 162 } 163 163 164 else if(datatype == MPI_CHAR)164 else if(datatype == EP_CHAR) 165 165 { 166 166 assert(datasize == sizeof(char)); … … 169 169 } 170 170 171 else if(datatype == MPI_LONG)171 else if(datatype == EP_LONG) 172 172 { 173 173 assert(datasize == sizeof(long)); … … 176 176 } 177 177 178 else if(datatype == MPI_UNSIGNED_LONG)178 else if(datatype == EP_UNSIGNED_LONG) 179 179 { 180 180 assert(datasize == sizeof(unsigned long)); … … 183 183 } 184 184 185 else if(datatype == MPI_LONG_LONG_INT)185 else if(datatype == EP_LONG_LONG_INT) 186 186 { 187 187 assert(datasize == sizeof(long long)); … … 199 199 200 200 201 else if(op == MPI_SUM)202 { 203 if(datatype== MPI_INT)201 else if(op == EP_SUM) 202 { 203 if(datatype==EP_INT) 204 204 { 205 205 assert(datasize == sizeof(int)); … … 215 215 } 216 216 217 else if(datatype == MPI_DOUBLE)217 else if(datatype == EP_DOUBLE) 218 218 { 219 219 assert(datasize == sizeof(double)); … … 222 222 } 223 223 224 else if(datatype == MPI_CHAR)224 else if(datatype == EP_CHAR) 225 225 { 226 226 assert(datasize == sizeof(char)); … … 229 229 } 230 230 231 else if(datatype == MPI_LONG)231 else if(datatype == EP_LONG) 232 232 { 233 233 assert(datasize == sizeof(long)); … … 236 236 } 237 237 238 else if(datatype == MPI_UNSIGNED_LONG)238 else if(datatype ==EP_UNSIGNED_LONG) 239 239 { 240 240 assert(datasize == sizeof(unsigned long)); … … 243 243 } 244 244 245 else if(datatype == MPI_LONG_LONG_INT)245 else if(datatype ==EP_LONG_LONG_INT) 246 246 { 247 247 assert(datasize == sizeof(long long)); … … 258 258 } 259 259 260 else if(op == MPI_LOR)261 { 262 if(datatype != MPI_INT)260 else if(op == EP_LOR) 261 { 262 if(datatype != EP_INT) 263 263 printf("datatype Error, must be MPI_INT\n"); 264 264 else -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_reduce_scatter.cpp
r1539 r1642 61 61 62 62 int my_recvcount = recvcounts[ep_rank]; 63 MPI_Gather_local(&my_recvcount, 1, MPI_INT, local_recvcounts.data(), 0, comm);64 MPI_Bcast_local(local_recvcounts.data(), num_ep, MPI_INT, 0, comm);63 MPI_Gather_local(&my_recvcount, 1, EP_INT, local_recvcounts.data(), 0, comm); 64 MPI_Bcast_local(local_recvcounts.data(), num_ep, EP_INT, 0, comm); 65 65 66 66 int my_displs = std::accumulate(recvcounts, recvcounts+ep_rank, 0); 67 MPI_Gather_local(&my_displs, 1, MPI_INT, local_displs.data(), 0, comm);68 MPI_Bcast_local(local_displs.data(), num_ep, MPI_INT, 0, comm);67 MPI_Gather_local(&my_displs, 1, EP_INT, local_displs.data(), 0, comm); 68 MPI_Bcast_local(local_displs.data(), num_ep, EP_INT, 0, comm); 69 69 70 70 -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_scan.cpp
r1540 r1642 60 60 if(ep_rank_loc == 0 && mpi_rank != 0) 61 61 { 62 if(op == MPI_SUM)63 { 64 if(datatype == MPI_INT)62 if(op == EP_SUM) 63 { 64 if(datatype == EP_INT) 65 65 { 66 66 assert(datasize == sizeof(int)); … … 68 68 } 69 69 70 else if(datatype == MPI_FLOAT)70 else if(datatype == EP_FLOAT) 71 71 { 72 72 assert( datasize == sizeof(float)); … … 74 74 } 75 75 76 else if(datatype == MPI_DOUBLE )76 else if(datatype == EP_DOUBLE ) 77 77 { 78 78 assert( datasize == sizeof(double)); … … 80 80 } 81 81 82 else if(datatype == MPI_CHAR)82 else if(datatype == EP_CHAR) 83 83 { 84 84 assert( datasize == sizeof(char)); … … 86 86 } 87 87 88 else if(datatype == MPI_LONG)88 else if(datatype == EP_LONG) 89 89 { 90 90 assert( datasize == sizeof(long)); … … 93 93 94 94 95 else if(datatype == MPI_UNSIGNED_LONG)95 else if(datatype == EP_UNSIGNED_LONG) 96 96 { 97 97 assert(datasize == sizeof(unsigned long)); … … 99 99 } 100 100 101 else if(datatype == MPI_LONG_LONG_INT)101 else if(datatype == EP_LONG_LONG_INT) 102 102 { 103 103 assert(datasize == sizeof(long long int)); … … 112 112 } 113 113 114 else if(op == MPI_MAX)115 { 116 if(datatype == MPI_INT)114 else if(op == EP_MAX) 115 { 116 if(datatype == EP_INT) 117 117 { 118 118 assert( datasize == sizeof(int)); … … 120 120 } 121 121 122 else if(datatype == MPI_FLOAT )122 else if(datatype == EP_FLOAT ) 123 123 { 124 124 assert( datasize == sizeof(float)); … … 126 126 } 127 127 128 else if(datatype == MPI_DOUBLE )128 else if(datatype == EP_DOUBLE ) 129 129 { 130 130 assert( datasize == sizeof(double)); … … 132 132 } 133 133 134 else if(datatype == MPI_CHAR )134 else if(datatype == EP_CHAR ) 135 135 { 136 136 assert(datasize == sizeof(char)); … … 138 138 } 139 139 140 else if(datatype == MPI_LONG)140 else if(datatype == EP_LONG) 141 141 { 142 142 assert( datasize == sizeof(long)); … … 144 144 } 145 145 146 else if(datatype == MPI_UNSIGNED_LONG)146 else if(datatype == EP_UNSIGNED_LONG) 147 147 { 148 148 assert( datasize == sizeof(unsigned long)); … … 150 150 } 151 151 152 else if(datatype == MPI_LONG_LONG_INT)152 else if(datatype == EP_LONG_LONG_INT) 153 153 { 154 154 assert(datasize == sizeof(long long int)); … … 163 163 } 164 164 165 else if(op == MPI_MIN)166 { 167 if(datatype == MPI_INT )165 else if(op == EP_MIN) 166 { 167 if(datatype == EP_INT ) 168 168 { 169 169 assert (datasize == sizeof(int)); … … 171 171 } 172 172 173 else if(datatype == MPI_FLOAT )173 else if(datatype == EP_FLOAT ) 174 174 { 175 175 assert( datasize == sizeof(float)); … … 177 177 } 178 178 179 else if(datatype == MPI_DOUBLE )179 else if(datatype == EP_DOUBLE ) 180 180 { 181 181 assert( datasize == sizeof(double)); … … 183 183 } 184 184 185 else if(datatype == MPI_CHAR )185 else if(datatype == EP_CHAR ) 186 186 { 187 187 assert( datasize == sizeof(char)); … … 189 189 } 190 190 191 else if(datatype == MPI_LONG )191 else if(datatype == EP_LONG ) 192 192 { 193 193 assert( datasize == sizeof(long)); … … 195 195 } 196 196 197 else if(datatype == MPI_UNSIGNED_LONG )197 else if(datatype == EP_UNSIGNED_LONG ) 198 198 { 199 199 assert( datasize == sizeof(unsigned long)); … … 201 201 } 202 202 203 else if(datatype == MPI_LONG_LONG_INT)203 else if(datatype == EP_LONG_LONG_INT) 204 204 { 205 205 assert(datasize == sizeof(long long int)); … … 235 235 236 236 237 if(op == MPI_SUM)238 { 239 if(datatype == MPI_INT )237 if(op == EP_SUM) 238 { 239 if(datatype == EP_INT ) 240 240 { 241 241 assert (datasize == sizeof(int)); … … 244 244 } 245 245 246 else if(datatype == MPI_FLOAT )246 else if(datatype == EP_FLOAT ) 247 247 { 248 248 assert(datasize == sizeof(float)); … … 252 252 253 253 254 else if(datatype == MPI_DOUBLE )254 else if(datatype == EP_DOUBLE ) 255 255 { 256 256 assert(datasize == sizeof(double)); … … 259 259 } 260 260 261 else if(datatype == MPI_CHAR )261 else if(datatype == EP_CHAR ) 262 262 { 263 263 assert(datasize == sizeof(char)); … … 266 266 } 267 267 268 else if(datatype == MPI_LONG )268 else if(datatype == EP_LONG ) 269 269 { 270 270 assert(datasize == sizeof(long)); … … 273 273 } 274 274 275 else if(datatype == MPI_UNSIGNED_LONG )275 else if(datatype == EP_UNSIGNED_LONG ) 276 276 { 277 277 assert(datasize == sizeof(unsigned long)); … … 280 280 } 281 281 282 else if(datatype == MPI_LONG_LONG_INT )282 else if(datatype == EP_LONG_LONG_INT ) 283 283 { 284 284 assert(datasize == sizeof(long long int)); … … 296 296 } 297 297 298 else if(op == MPI_MAX)299 { 300 if(datatype == MPI_INT)298 else if(op == EP_MAX) 299 { 300 if(datatype == EP_INT) 301 301 { 302 302 assert(datasize == sizeof(int)); … … 305 305 } 306 306 307 else if(datatype == MPI_FLOAT )307 else if(datatype == EP_FLOAT ) 308 308 { 309 309 assert(datasize == sizeof(float)); … … 312 312 } 313 313 314 else if(datatype == MPI_DOUBLE )314 else if(datatype == EP_DOUBLE ) 315 315 { 316 316 assert(datasize == sizeof(double)); … … 319 319 } 320 320 321 else if(datatype == MPI_CHAR )321 else if(datatype == EP_CHAR ) 322 322 { 323 323 assert(datasize == sizeof(char)); … … 326 326 } 327 327 328 else if(datatype == MPI_LONG )328 else if(datatype == EP_LONG ) 329 329 { 330 330 assert(datasize == sizeof(long)); … … 333 333 } 334 334 335 else if(datatype == MPI_UNSIGNED_LONG )335 else if(datatype == EP_UNSIGNED_LONG ) 336 336 { 337 337 assert(datasize == sizeof(unsigned long)); … … 340 340 } 341 341 342 else if(datatype == MPI_LONG_LONG_INT )342 else if(datatype == EP_LONG_LONG_INT ) 343 343 { 344 344 assert(datasize == sizeof(long long int)); … … 355 355 } 356 356 357 else if(op == MPI_MIN)358 { 359 if(datatype == MPI_INT )357 else if(op == EP_MIN) 358 { 359 if(datatype == EP_INT ) 360 360 { 361 361 assert(datasize == sizeof(int)); … … 364 364 } 365 365 366 else if(datatype == MPI_FLOAT )366 else if(datatype == EP_FLOAT ) 367 367 { 368 368 assert(datasize == sizeof(float)); … … 371 371 } 372 372 373 else if(datatype == MPI_DOUBLE )373 else if(datatype == EP_DOUBLE ) 374 374 { 375 375 assert(datasize == sizeof(double)); … … 378 378 } 379 379 380 else if(datatype == MPI_CHAR )380 else if(datatype == EP_CHAR ) 381 381 { 382 382 assert(datasize == sizeof(char)); … … 385 385 } 386 386 387 else if(datatype == MPI_LONG )387 else if(datatype == EP_LONG ) 388 388 { 389 389 assert(datasize == sizeof(long)); … … 392 392 } 393 393 394 else if(datatype == MPI_UNSIGNED_LONG )394 else if(datatype == EP_UNSIGNED_LONG ) 395 395 { 396 396 assert(datasize == sizeof(unsigned long)); … … 399 399 } 400 400 401 else if(datatype == MPI_LONG_LONG_INT )401 else if(datatype == EP_LONG_LONG_INT ) 402 402 { 403 403 assert(datasize == sizeof(long long int)); -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_scatter.cpp
r1539 r1642 73 73 std::vector<int>ranks(ep_size); 74 74 75 if(mpi_rank == root_mpi_rank) MPI_Gather_local(&ep_rank, 1, MPI_INT, local_ranks.data(), root_ep_loc, comm);76 else MPI_Gather_local(&ep_rank, 1, MPI_INT, local_ranks.data(), 0, comm);75 if(mpi_rank == root_mpi_rank) MPI_Gather_local(&ep_rank, 1, EP_INT, local_ranks.data(), root_ep_loc, comm); 76 else MPI_Gather_local(&ep_rank, 1, EP_INT, local_ranks.data(), 0, comm); 77 77 78 78 … … 91 91 displs[i] = displs[i-1] + recvcounts[i-1]; 92 92 93 ::MPI_Gatherv(local_ranks.data(), num_ep, to_mpi_type( MPI_INT), ranks.data(), recvcounts.data(), displs.data(), to_mpi_type(MPI_INT), root_mpi_rank, to_mpi_comm(comm->mpi_comm));93 ::MPI_Gatherv(local_ranks.data(), num_ep, to_mpi_type(EP_INT), ranks.data(), recvcounts.data(), displs.data(), to_mpi_type(EP_INT), root_mpi_rank, to_mpi_comm(comm->mpi_comm)); 94 94 } 95 95 … … 109 109 { 110 110 int local_sendcount = num_ep * count; 111 ::MPI_Gather(&local_sendcount, 1, to_mpi_type( MPI_INT), recvcounts.data(), 1, to_mpi_type(MPI_INT), root_mpi_rank, to_mpi_comm(comm->mpi_comm));111 ::MPI_Gather(&local_sendcount, 1, to_mpi_type(EP_INT), recvcounts.data(), 1, to_mpi_type(EP_INT), root_mpi_rank, to_mpi_comm(comm->mpi_comm)); 112 112 113 113 if(is_root) for(int i=1; i<mpi_size; i++) displs[i] = displs[i-1] + recvcounts[i-1]; -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_scatterv.cpp
r1539 r1642 76 76 std::vector<int>ranks(ep_size); 77 77 78 if(mpi_rank == root_mpi_rank) MPI_Gather_local(&ep_rank, 1, MPI_INT, local_ranks.data(), root_ep_loc, comm);79 else MPI_Gather_local(&ep_rank, 1, MPI_INT, local_ranks.data(), 0, comm);78 if(mpi_rank == root_mpi_rank) MPI_Gather_local(&ep_rank, 1, EP_INT, local_ranks.data(), root_ep_loc, comm); 79 else MPI_Gather_local(&ep_rank, 1, EP_INT, local_ranks.data(), 0, comm); 80 80 81 81 … … 94 94 my_displs[i] = my_displs[i-1] + recvcounts[i-1]; 95 95 96 ::MPI_Gatherv(local_ranks.data(), num_ep, to_mpi_type( MPI_INT), ranks.data(), recvcounts.data(), my_displs.data(), to_mpi_type(MPI_INT), root_mpi_rank, to_mpi_comm(comm->mpi_comm));96 ::MPI_Gatherv(local_ranks.data(), num_ep, to_mpi_type(EP_INT), ranks.data(), recvcounts.data(), my_displs.data(), to_mpi_type(EP_INT), root_mpi_rank, to_mpi_comm(comm->mpi_comm)); 97 97 } 98 98 … … 112 112 void* local_sendbuf; 113 113 int local_sendcount; 114 if(mpi_rank == root_mpi_rank) MPI_Reduce_local(&recvcount, &local_sendcount, 1, MPI_INT, MPI_SUM, root_ep_loc, comm);115 else MPI_Reduce_local(&recvcount, &local_sendcount, 1, MPI_INT, MPI_SUM, 0, comm);114 if(mpi_rank == root_mpi_rank) MPI_Reduce_local(&recvcount, &local_sendcount, 1, EP_INT, EP_SUM, root_ep_loc, comm); 115 else MPI_Reduce_local(&recvcount, &local_sendcount, 1, EP_INT, EP_SUM, 0, comm); 116 116 117 117 if(is_master) … … 119 119 local_sendbuf = new void*[datasize * local_sendcount]; 120 120 121 ::MPI_Gather(&local_sendcount, 1, to_mpi_type( MPI_INT), recvcounts.data(), 1, to_mpi_type(MPI_INT), root_mpi_rank, to_mpi_comm(comm->mpi_comm));121 ::MPI_Gather(&local_sendcount, 1, to_mpi_type(EP_INT), recvcounts.data(), 1, to_mpi_type(EP_INT), root_mpi_rank, to_mpi_comm(comm->mpi_comm)); 122 122 123 123 if(is_root) for(int i=1; i<mpi_size; i++) my_displs[i] = my_displs[i-1] + recvcounts[i-1]; … … 129 129 std::vector<int>local_displs(num_ep, 0); 130 130 131 MPI_Gather_local(&recvcount, 1, MPI_INT, local_sendcounts.data(), 0, comm);132 MPI_Bcast_local(local_sendcounts.data(), num_ep, MPI_INT, 0, comm);131 MPI_Gather_local(&recvcount, 1, EP_INT, local_sendcounts.data(), 0, comm); 132 MPI_Bcast_local(local_sendcounts.data(), num_ep, EP_INT, 0, comm); 133 133 for(int i=1; i<num_ep; i++) 134 134 local_displs[i] = local_displs[i-1] + local_sendcounts[i-1]; -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_split.cpp
r1539 r1642 54 54 vector<int> all_color_loc(num_ep); 55 55 56 MPI_Allgather(&color, 1, MPI_INT, all_color.data(), 1, MPI_INT, comm);57 MPI_Allgather_local(&color, 1, MPI_INT, all_color_loc.data(), comm);56 MPI_Allgather(&color, 1, EP_INT, all_color.data(), 1, EP_INT, comm); 57 MPI_Allgather_local(&color, 1, EP_INT, all_color_loc.data(), comm); 58 58 59 59 list<int> color_list(all_color.begin(), all_color.end()); … … 106 106 107 107 108 MPI_Allgather(&key, 1, MPI_INT, all_key.data(),1, MPI_INT, comm);109 MPI_Allgather_local(&key, 1, MPI_INT, all_key_loc.data(), comm);108 MPI_Allgather(&key, 1, EP_INT, all_key.data(),1, EP_INT, comm); 109 MPI_Allgather_local(&key, 1, EP_INT, all_key_loc.data(), comm); 110 110 111 111 vector<int> all_ep_rank(ep_size); … … 115 115 vector<int> colored_ep_rank_loc[num_color]; 116 116 117 MPI_Allgather(&ep_rank, 1, MPI_INT, all_ep_rank.data(),1, MPI_INT, comm);118 MPI_Allgather_local(&ep_rank, 1, MPI_INT, all_ep_rank_loc.data(), comm);117 MPI_Allgather(&ep_rank, 1, EP_INT, all_ep_rank.data(),1, EP_INT, comm); 118 MPI_Allgather_local(&ep_rank, 1, EP_INT, all_ep_rank_loc.data(), comm); 119 119 120 120 for(int i=0; i<num_ep; i++) … … 270 270 if(new_ep_rank_loc == 0) my_triple_vector_recv.resize(3*new_ep_size); 271 271 272 MPI_Gather_local(my_triple, 3, MPI_INT, my_triple_vector.data(), 0, *newcomm);272 MPI_Gather_local(my_triple, 3, EP_INT, my_triple_vector.data(), 0, *newcomm); 273 273 274 274 if(new_ep_rank_loc == 0) … … 277 277 int *displs = new int[new_mpi_size]; 278 278 int new_num_epx3 = new_num_ep * 3; 279 ::MPI_Allgather(&new_num_epx3, 1, to_mpi_type( MPI_INT), recvcounts, 1, to_mpi_type(MPI_INT), to_mpi_comm((*newcomm)->mpi_comm));279 ::MPI_Allgather(&new_num_epx3, 1, to_mpi_type(EP_INT), recvcounts, 1, to_mpi_type(EP_INT), to_mpi_comm((*newcomm)->mpi_comm)); 280 280 displs[0]=0; 281 281 for(int i=1; i<new_mpi_size; i++) 282 282 displs[i] = displs[i-1] + recvcounts[i-1]; 283 283 284 ::MPI_Allgatherv(my_triple_vector.data(), 3*new_num_ep, to_mpi_type( MPI_INT), my_triple_vector_recv.data(), recvcounts, displs, to_mpi_type(MPI_INT), to_mpi_comm((*newcomm)->mpi_comm));284 ::MPI_Allgatherv(my_triple_vector.data(), 3*new_num_ep, to_mpi_type(EP_INT), my_triple_vector_recv.data(), recvcounts, displs, to_mpi_type(EP_INT), to_mpi_comm((*newcomm)->mpi_comm)); 285 285 286 286 for(int i=0; i<new_ep_size; i++) 287 287 { 288 (*newcomm)->ep_comm_ptr->comm_list[0]->ep_rank_map->insert(std::pair< int, std::pair<int,int> >(my_triple_vector_recv[3*i], my_triple_vector_recv[3*i+1], my_triple_vector_recv[3*i+2])); 288 //(*newcomm)->ep_comm_ptr->comm_list[0]->ep_rank_map->insert(std::pair< int, std::pair<int,int> >(my_triple_vector_recv[3*i], my_triple_vector_recv[3*i+1], my_triple_vector_recv[3*i+2])); 289 (*((*newcomm)->ep_comm_ptr->comm_list[0]->ep_rank_map)) [ my_triple_vector_recv[3*i] ] = std::make_pair(my_triple_vector_recv[3*i+1], my_triple_vector_recv[3*i+2]); 289 290 } 290 291 -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_type.hpp
r1539 r1642 68 68 69 69 MPI_Fint() {} 70 MPI_Fint(void* fint) ;70 MPI_Fint(void* fint) {mpi_fint = fint;}; 71 71 72 72 }; -
XIOS/dev/branch_openmp/extern/src_ep_dev/ep_win.cpp
r1521 r1642 21 21 22 22 int num_ep_max; 23 MPI_Allreduce(&num_ep, &num_ep_max, 1, MPI_INT, MPI_MAX, comm);23 MPI_Allreduce(&num_ep, &num_ep_max, 1, EP_INT, EP_MAX, comm); 24 24 25 25 assert(num_ep_max > 1); … … 88 88 89 89 int num_ep_max; 90 MPI_Allreduce(&num_ep, &num_ep_max, 1, MPI_INT, MPI_MAX, (*win)->comm);90 MPI_Allreduce(&num_ep, &num_ep_max, 1, EP_INT, EP_MAX, (*win)->comm); 91 91 92 92 //printf("rank_loc = %d, thread_num = %d, num_ep_max = %d\n", rank_loc, omp_get_thread_num(), num_ep_max); … … 139 139 140 140 int num_ep_max; 141 MPI_Allreduce(&num_ep, &num_ep_max, 1, MPI_INT, MPI_MAX, win->comm);141 MPI_Allreduce(&num_ep, &num_ep_max, 1, EP_INT, EP_MAX, win->comm); 142 142 143 143 if(num_ep == 1)
Note: See TracChangeset
for help on using the changeset viewer.