Ignore:
Timestamp:
11/27/17 13:46:40 (4 years ago)
Author:
yushan
Message:

dev omp from Ada

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_openmp/extern/src_ep_dev/ep_message.cpp

    r1295 r1347  
    5252      } 
    5353      #elif _intelmpi 
    54       ::MPI_Improbe(MPI_ANY_SOURCE, MPI_ANY_TAG, to_mpi_comm(comm.mpi_comm), &flag, &message, &status);  
     54      #pragma omp critical (_mpi_call) 
     55      { 
     56        ::MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, to_mpi_comm(comm.mpi_comm), &flag, &status); 
     57        if(flag) 
     58        { 
     59          Debug("find message in mpi comm \n"); 
     60          mpi_source = status.MPI_SOURCE; 
     61          int tag = status.MPI_TAG; 
     62          ::MPI_Mprobe(mpi_source, tag, to_mpi_comm(comm.mpi_comm), &message, &status); 
     63 
     64        } 
     65      } 
     66      //::MPI_Improbe(MPI_ANY_SOURCE, MPI_ANY_TAG, to_mpi_comm(comm.mpi_comm), &flag, &message, &status);  
    5567      #endif 
    5668       
     
    120132      } 
    121133      #elif _intelmpi 
    122       ::MPI_Improbe(MPI_ANY_SOURCE, MPI_ANY_TAG, to_mpi_comm(comm.ep_comm_ptr->intercomm->mpi_inter_comm), &flag, &message, &status);        
     134      #pragma omp critical (_mpi_call) 
     135      { 
     136        ::MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, to_mpi_comm(comm.ep_comm_ptr->intercomm->mpi_inter_comm), &flag, &status); 
     137        if(flag) 
     138        { 
     139          Debug("find message in mpi comm \n"); 
     140          mpi_source = status.MPI_SOURCE; 
     141          int tag = status.MPI_TAG; 
     142          ::MPI_Mprobe(mpi_source, tag, to_mpi_comm(comm.ep_comm_ptr->intercomm->mpi_inter_comm), &message, &status); 
     143 
     144        } 
     145      } 
     146      //::MPI_Improbe(MPI_ANY_SOURCE, MPI_ANY_TAG, to_mpi_comm(comm.ep_comm_ptr->intercomm->mpi_inter_comm), &flag, &message, &status);        
    123147      #endif 
    124148 
     
    175199      } 
    176200      #elif _intelmpi 
    177       ::MPI_Improbe(MPI_ANY_SOURCE, MPI_ANY_TAG, to_mpi_comm(comm.mpi_comm), &flag, &message, &status);        
     201      #pragma omp critical (_mpi_call) 
     202      { 
     203        ::MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, to_mpi_comm(comm.mpi_comm), &flag, &status); 
     204        if(flag) 
     205        { 
     206          Debug("find message in mpi comm \n"); 
     207          mpi_source = status.MPI_SOURCE; 
     208          int tag = status.MPI_TAG; 
     209          ::MPI_Mprobe(mpi_source, tag, to_mpi_comm(comm.mpi_comm), &message, &status); 
     210 
     211        } 
     212      } 
     213      //::MPI_Improbe(MPI_ANY_SOURCE, MPI_ANY_TAG, to_mpi_comm(comm.mpi_comm), &flag, &message, &status);        
    178214      #endif 
    179215 
Note: See TracChangeset for help on using the changeset viewer.