ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/brains/BlockSnapshotManager.cpp
(Generate patch)

Comparing trunk/src/brains/BlockSnapshotManager.cpp (file contents):
Revision 1879 by gezelter, Sun Jun 16 15:15:42 2013 UTC vs.
Revision 1965 by gezelter, Fri Jan 24 13:53:41 2014 UTC

# Line 67 | Line 67 | namespace OpenMD {
67        // RealType avaliablePhysMem = physMem - rssMem;
68      
69        int bytesPerStuntDouble = DataStorage::getBytesPerStuntDouble(storageLayout);
70 <      int bytesPerFrame = (nRigidBodies_ + nAtoms_) * bytesPerStuntDouble;
70 >      int bytesPerCutoffGroup = DataStorage::getBytesPerStuntDouble(DataStorage::dslPosition);
71 >      int bytesPerFrame = (nRigidBodies_ + nAtoms_) * bytesPerStuntDouble
72 >        + nCutoffGroups_ * bytesPerCutoffGroup;
73  
74        // total number of frames that can fit in memory
75        //RealType frameCapacity = avaliablePhysMem / bytesPerFrame;
# Line 76 | Line 78 | namespace OpenMD {
78        // number of frames in each block given the need to hold multiple blocks
79        // in memory at the same time:
80        nSnapshotPerBlock_ = int(frameCapacity) / blockCapacity_;
81 +      if (nSnapshotPerBlock_ <= 0) {
82 +       std::cerr << "not enough memory to hold two configs!" << std::endl;
83 +      }
84        reader_ = new DumpReader(info, filename);
85        nframes_ = reader_->getNFrames();
86        int nblocks = nframes_ / nSnapshotPerBlock_;
# Line 99 | Line 104 | namespace OpenMD {
104        //std::cout << "Memory available for OpenMD:\t" << (unsigned long)avaliablePhysMem << " bytes" <<std::endl;
105        std::cout << "Memory requested for OpenMD:\t" << (unsigned long)memSize_ << " bytes" <<std::endl;
106        std::cout << "      Bytes per StuntDouble:\t" << (unsigned long)bytesPerStuntDouble <<std::endl;
107 +      std::cout << "     Bytes per Cutoff Group:\t" << (unsigned long)bytesPerCutoffGroup <<std::endl;
108        std::cout << "            Bytes per Frame:\t" << (unsigned long)bytesPerFrame <<std::endl;
109        std::cout << "             Frame Capacity:\t" << (unsigned long)frameCapacity <<std::endl;
110        std::cout << "       Frames in trajectory:\t" << (unsigned long)nframes_ <<std::endl;
# Line 175 | Line 181 | namespace OpenMD {
181          //in case, unloadBlock called multiple times
182          activeRefCount_[i - activeBlocks_.begin()]  = 0;
183        }
184 +
185 +      if (activeRefCount_[i-activeBlocks_.begin()] == 0) {
186 +        internalUnload(block);
187 +      }
188          
189        unloadSuccess = true;
190      } else {
# Line 198 | Line 208 | namespace OpenMD {
208    }
209  
210    void BlockSnapshotManager::internalUnload(int block) {
211 +    std::cerr << "called internal unload for block "<< block << "\n";
212      for (int i = blocks_[block].first; i < blocks_[block].second; ++i) {
213        delete snapshots_[i];
214        snapshots_[i] = NULL;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines