Changeset 1072 for XIOS/dev/branch_yushan/extern/src_ep_dev
- Timestamp:
- 03/14/17 19:12:25 (7 years ago)
- Location:
- XIOS/dev/branch_yushan/extern/src_ep_dev
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_yushan/extern/src_ep_dev/ep_fortran.cpp
r1069 r1072 19 19 fint = ::MPI_Comm_c2f(static_cast< ::MPI_Comm>(comm.mpi_comm)); 20 20 #endif 21 21 22 std::map<std::pair<int, int>, MPI_Comm > ::iterator it; 22 23 … … 50 51 else 51 52 { 52 MPI_Comm return_comm; 53 if(omp_get_thread_num() == 0) 53 54 #ifdef _openmpi 55 ::MPI_Comm base_comm = ::MPI_Comm_f2c(comm); 56 #elif _intelmpi 57 ::MPI_Comm base_comm = (::MPI_Comm)(comm); 58 #endif 59 60 if(base_comm != MPI_COMM_NULL_STD) 54 61 { 55 #ifdef _openmpi 56 ::MPI_Comm base_comm = ::MPI_Comm_f2c(comm); 57 #elif _intelmpi 58 ::MPI_Comm base_comm = (::MPI_Comm)(comm); 59 #endif 60 61 if(base_comm != MPI_COMM_NULL_STD) 62 if(omp_get_thread_num() == 0) 62 63 { 63 64 int num_ep = omp_get_num_threads(); … … 65 66 MPI_Info info; 66 67 MPI_Comm_create_endpoints(base_comm, num_ep, info, new_comm); 67 return_comm = new_comm[omp_get_thread_num()];68 passage = new_comm; 68 69 } 69 return MPI_COMM_NULL; 70 #pragma omp barrier 71 72 MPI_Comm return_comm = passage[omp_get_thread_num()]; 73 return return_comm; 74 70 75 } 76 return MPI_COMM_NULL; 71 77 72 73 return return_comm;74 78 } 75 79 } -
XIOS/dev/branch_yushan/extern/src_ep_dev/ep_intercomm_kernel.cpp
r1068 r1072 420 420 *newintercomm = iter->second[my_position]; 421 421 found = true; 422 tag_list.erase(iter);423 422 break; 424 423 } … … 428 427 429 428 MPI_Barrier_local(local_comm); 430 //if(is_proc_master)431 //{432 //for(std::list<std::pair < std::pair<int,int>, MPI_Comm* > >::iterator iter = tag_list.begin(); iter!=tag_list.end(); iter++)433 //{434 //if((*iter).first == make_pair(tag, min(leader_info[0], leader_info[1])))435 //{436 //tag_list.erase(iter);437 //break;438 //}439 //}440 //}429 if(is_proc_master) 430 { 431 for(std::list<std::pair < std::pair<int,int>, MPI_Comm* > >::iterator iter = tag_list.begin(); iter!=tag_list.end(); iter++) 432 { 433 if((*iter).first == make_pair(tag, min(leader_info[0], leader_info[1]))) 434 { 435 tag_list.erase(iter); 436 break; 437 } 438 } 439 } 441 440 442 441 int intercomm_ep_rank, intercomm_ep_rank_loc, intercomm_mpi_rank; … … 687 686 *newintercomm = iter->second[my_position]; 688 687 found = true; 688 // tag_list.erase(iter); 689 break; 690 } 691 } 692 } 693 } 694 695 MPI_Barrier_local(local_comm); 696 697 if(leader_rank_in_peer[0] < leader_rank_in_peer[1]) 698 { 699 for(std::list<std::pair < std::pair<int,int>, MPI_Comm* > >::iterator iter = tag_list.begin(); iter!=tag_list.end(); iter++) 700 { 701 if((*iter).first == make_pair(tag_label[0], tag_label[1])) 702 { 689 703 tag_list.erase(iter); 690 704 break; 691 705 } 692 706 } 693 } 694 } 695 696 // if(leader_rank_in_peer[0] < leader_rank_in_peer[1]) 697 // { 698 // for(std::list<std::pair < std::pair<int,int>, MPI_Comm* > >::iterator iter = tag_list.begin(); iter!=tag_list.end(); iter++) 699 // { 700 // if((*iter).first == make_pair(tag_label[0], tag_label[1])) 701 // { 702 // tag_list.erase(iter); 703 // } 704 // } 705 // } 707 } 706 708 707 709 -
XIOS/dev/branch_yushan/extern/src_ep_dev/ep_intercomm_world.cpp
r1067 r1072 417 417 418 418 found = true; 419 tag_list.erase(iter);419 //tag_list.erase(iter); 420 420 break; 421 421 } … … 426 426 MPI_Barrier_local(local_comm); 427 427 428 // if(is_proc_master) 429 // { 430 // for(std::list<std::pair < std::pair<int,int>, MPI_Comm* > >::iterator iter = tag_list.begin(); iter!=tag_list.end(); iter++) 431 // { 432 // if((*iter).first == make_pair(tag, min(leader_info[0], leader_info[1]))) 433 // { 434 // tag_list.erase(iter); 435 // } 436 // } 437 // } 428 if(is_proc_master) 429 { 430 for(std::list<std::pair < std::pair<int,int>, MPI_Comm* > >::iterator iter = tag_list.begin(); iter!=tag_list.end(); iter++) 431 { 432 if((*iter).first == make_pair(tag, min(leader_info[0], leader_info[1]))) 433 { 434 tag_list.erase(iter); 435 break; 436 } 437 } 438 } 438 439 439 440 … … 934 935 935 936 found = true; 936 tag_list.erase(iter);937 //tag_list.erase(iter); 937 938 break; 938 939 } … … 943 944 MPI_Barrier_local(local_comm); 944 945 945 // if(is_proc_master) 946 // { 947 // for(std::list<std::pair < std::pair<int,int>, MPI_Comm* > >::iterator iter = tag_list.begin(); iter!=tag_list.end(); iter++) 948 // { 949 // if((*iter).first == make_pair(tag, min(leader_info[0], leader_info[1]))) 950 // { 951 // tag_list.erase(iter); 952 // } 953 // } 954 // } 946 if(is_proc_master) 947 { 948 for(std::list<std::pair < std::pair<int,int>, MPI_Comm* > >::iterator iter = tag_list.begin(); iter!=tag_list.end(); iter++) 949 { 950 if((*iter).first == make_pair(tag, min(leader_info[0], leader_info[1]))) 951 { 952 tag_list.erase(iter); 953 break; 954 } 955 } 956 } 955 957 956 958 int intercomm_ep_rank, intercomm_ep_rank_loc, intercomm_mpi_rank;
Note: See TracChangeset
for help on using the changeset viewer.