Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/g4tools/include/toolx/mpi/wait_buffer

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /externals/g4tools/include/toolx/mpi/wait_buffer (Version 11.3.0) and /externals/g4tools/include/toolx/mpi/wait_buffer (Version 9.1.p1)


  1 // Copyright (C) 2010, Guy Barrand. All rights    
  2 // See the file tools.license for terms.          
  3                                                   
  4 #ifndef toolx_mpi_wait_buffer                     
  5 #define toolx_mpi_wait_buffer                     
  6                                                   
  7 #include <mpi.h>                                  
  8                                                   
  9 #include <ostream>                                
 10                                                   
 11 namespace toolx {                                 
 12 namespace mpi {                                   
 13                                                   
 14 inline bool wait_buffer(std::ostream& a_out,in    
 15                         int& a_buffer_size,cha    
 16   a_buffer = 0;                                   
 17   a_buffer_size = 0;                              
 18   a_probe_src = -1;                               
 19                                                   
 20   MPI_Status status;                              
 21   if(::MPI_Probe(a_src,a_tag,a_comm,&status)!=    
 22     a_out << "toolx::mpi::wait_buffer : rank "    
 23     return false;                                 
 24   }                                               
 25                                                   
 26   if(::MPI_Get_count(&status,MPI_CHAR,&a_buffe    
 27     a_out << "toolx::mpi::wait_buffer : rank "    
 28     a_buffer_size = 0;                            
 29     return false;                                 
 30   }                                               
 31                                                   
 32   a_probe_src = status.MPI_SOURCE;                
 33                                                   
 34   if(!a_buffer_size) {                            
 35     a_out << "exlb::mpi::wait_buffer : MPI_Get    
 36     a_probe_src = -1;                             
 37     return false;                                 
 38   }                                               
 39                                                   
 40   if(a_verbose) a_out << "toolx::mpi::wait_buf    
 41                                                   
 42   a_buffer = new char[a_buffer_size];             
 43   if(!a_buffer) {                                 
 44     a_out << "toolx::mpi::wait_buffer : rank "    
 45     a_buffer_size = 0;                            
 46     a_probe_src = -1;                             
 47     return false;                                 
 48   }                                               
 49                                                   
 50   if(::MPI_Recv(a_buffer,a_buffer_size,MPI_CHA    
 51     a_out << "toolx::mpi::wait_buffer : rank "    
 52     a_buffer_size = 0;                            
 53     delete [] a_buffer;                           
 54     a_buffer = 0;                                 
 55     a_probe_src = -1;                             
 56     return false;                                 
 57   }                                               
 58                                                   
 59   if(a_verbose) a_out << "toolx::mpi::wait_buf    
 60                                                   
 61   return true;                                    
 62 }                                                 
 63                                                   
 64 }}                                                
 65                                                   
 66 #endif