Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/global/management/src/G4AllocatorList.cc

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 /global/management/src/G4AllocatorList.cc (Version 11.3.0) and /global/management/src/G4AllocatorList.cc (Version 5.2)


  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26 // G4AllocatorList class implementation           
 27 //                                                
 28 // Authors: M.Asai (SLAC), G.Cosmo (CERN), Jun    
 29 // -------------------------------------------    
 30                                                   
 31 #include <iomanip>                                
 32                                                   
 33 #include "G4Allocator.hh"                         
 34 #include "G4AllocatorList.hh"                     
 35 #include "G4ios.hh"                               
 36                                                   
 37 G4ThreadLocal G4AllocatorList* G4AllocatorList    
 38                                                   
 39 // -------------------------------------------    
 40 G4AllocatorList* G4AllocatorList::GetAllocator    
 41 {                                                 
 42   if(fAllocatorList == nullptr)                   
 43   {                                               
 44     fAllocatorList = new G4AllocatorList;         
 45   }                                               
 46   return fAllocatorList;                          
 47 }                                                 
 48                                                   
 49 // -------------------------------------------    
 50 G4AllocatorList* G4AllocatorList::GetAllocator    
 51 {                                                 
 52   return fAllocatorList;                          
 53 }                                                 
 54                                                   
 55 // -------------------------------------------    
 56 G4AllocatorList::~G4AllocatorList() { fAllocat    
 57                                                   
 58 // -------------------------------------------    
 59 void G4AllocatorList::Register(G4AllocatorBase    
 60 {                                                 
 61   fList.push_back(alloc);                         
 62 }                                                 
 63                                                   
 64 // -------------------------------------------    
 65 void G4AllocatorList::Destroy(G4int nStat, G4i    
 66 {                                                 
 67   auto itr = fList.cbegin();                      
 68   G4int i = 0, j = 0;                             
 69   G4double mem = 0, tmem = 0;                     
 70   if(verboseLevel > 0)                            
 71   {                                               
 72     G4cout << "================== Deleting mem    
 73            << G4endl;                             
 74   }                                               
 75   for(; itr != fList.cend(); ++itr)               
 76   {                                               
 77     mem = (*itr)->GetAllocatedSize();             
 78     if(i < nStat)                                 
 79     {                                             
 80       ++i;                                        
 81       tmem += mem;                                
 82       (*itr)->ResetStorage();                     
 83       continue;                                   
 84     }                                             
 85     ++j;                                          
 86     tmem += mem;                                  
 87     if(verboseLevel > 1)                          
 88     {                                             
 89       G4cout << "Pool ID '" << (*itr)->GetPool    
 90              << "', size : " << std::setprecis    
 91              << std::setprecision(6) << " MB"     
 92     }                                             
 93     (*itr)->ResetStorage();                       
 94     delete *itr;                                  
 95   }                                               
 96   if(verboseLevel > 0)                            
 97   {                                               
 98     G4cout << "Number of memory pools allocate    
 99            << "; of which, static: " << i << G    
100     G4cout << "Dynamic pools deleted: " << j      
101            << " / Total memory freed: " << std    
102            << tmem / 1048576 << std::setprecis    
103     G4cout << "===============================    
104            << G4endl;                             
105   }                                               
106   fList.clear();                                  
107 }                                                 
108                                                   
109 void G4AllocatorList::Report(G4bool itemize) c    
110 {                                                 
111   auto itr = fList.cbegin();                      
112   G4int j = 0;                                    
113   G4double mem = 0, tmem = 0;                     
114   G4cout << "================== Current memory    
115          << G4endl;                               
116   for(; itr != fList.cend(); ++itr)               
117   {                                               
118     mem = (*itr)->GetAllocatedSize();             
119     ++j;                                          
120     tmem += mem;                                  
121     if(itemize)                                   
122     {                                             
123       G4cout << "Pool ID '" << (*itr)->GetPool    
124              << "', size : " << std::setprecis    
125              << std::setprecision(6) << " MB"     
126     }                                             
127   }                                               
128   G4cout << "Number of memory pools allocated:    
129   G4cout << "Dynamic pools : " << j               
130          << " / Total memory : " << std::setpr    
131          << tmem / 1048576 << std::setprecisio    
132   G4cout << "=================================    
133          << G4endl;                               
134 }                                                 
135