Translator/include/ChunkPolicy.h

Go to the documentation of this file.
00001 #ifndef TRANSLATOR_CHUNKPOLICY_H
00002 #define TRANSLATOR_CHUNKPOLICY_H
00003 
00004 #include <vector>
00005 
00006 #include "psddl_hdf2psana/ChunkPolicy.h"
00007 
00008 namespace Translator {
00009 
00010 class ChunkManager;
00011 
00012 /**
00013  *  @ingroup Translator
00014  *
00015  *  @brief Copy of default implementation on the chunk size policy, with dynamic updating.
00016  *
00017  *  This class copies psddl_hdf2psana::DefaultChunkPolicy and extends it to update chunk
00018  *  parameters after construction. It deviates from DefaultChunkPolicy in how the 
00019  *  the per dataset chunk cache is created.  It uses a target of cache size of 2.
00020  *
00021  *  @note This software was developed for the LCLS project.  If you use all or 
00022  *  part of it, please give an appropriate acknowledgment.
00023  *
00024  *  @author David Schneider
00025  */
00026 class ChunkPolicy : public psddl_hdf2psana::ChunkPolicy {
00027 public:
00028   ChunkPolicy(hsize_t chunkSizeTargetBytes = 16*1024*1024,  // 16MB
00029               int chunkSizeTargetObjects = 0,
00030               hsize_t maxChunkSizeBytes = 100*1024*1024,    // 100MB
00031               int minObjectsPerChunk = 50,
00032               int maxObjectsPerChunk = 2048,
00033               int chunkCacheSizeTargetInChunks = 2,
00034               hsize_t maxChunkCacheSizeBytes = 100*1024*1024);  // 100MB
00035 
00036   // Destructor
00037   virtual ~ChunkPolicy () ;
00038   
00039   // returns chunk size in elements
00040   virtual int chunkSize(const hdf5pp::Type& dsType) const;
00041   virtual int chunkSize(const size_t typeSize) const;
00042 
00043   // returns chunk cache size in chunks
00044   virtual int chunkCacheSize(const hdf5pp::Type& dsType) const;
00045   virtual int chunkCacheSize(const size_t typeSize) const;
00046 
00047   friend class ChunkManager;
00048 
00049 protected:
00050   hsize_t chunkSizeTargetBytes() const { return  m_chunkSizeTargetBytes;}
00051   int chunkSizeTargetObjects() const { return  m_chunkSizeTargetObjects;}
00052   hsize_t maxChunkSizeBytes() const { return  m_maxChunkSizeBytes;}
00053   int minObjectsPerChunk() const { return  m_minObjectsPerChunk;}
00054   int maxObjectsPerChunk() const { return  m_maxObjectsPerChunk;}
00055   hsize_t chunkCacheSizeTargetInChunks() const { return  m_chunkCacheSizeTargetInChunks;}
00056   hsize_t maxChunkCacheSizeBytes() const { return  m_maxChunkCacheSizeBytes;}
00057 
00058   void chunkSizeTargetBytes(hsize_t val) { m_chunkSizeTargetBytes = val;}
00059   void chunkSizeTargetObjects(int val);
00060   void maxChunkSizeBytes(hsize_t val) { m_maxChunkSizeBytes = val;}
00061   void minObjectsPerChunk(int val) { m_minObjectsPerChunk = val;}
00062   void maxObjectsPerChunk(int val) { m_maxObjectsPerChunk = val;}
00063   void chunkCacheSizeTargetInChunks(hsize_t val) {m_chunkCacheSizeTargetInChunks = val;}
00064   void maxChunkCacheSizeBytes(hsize_t val) { m_maxChunkCacheSizeBytes = val;}
00065 
00066 private:
00067   hsize_t m_chunkSizeTargetBytes;
00068   int  m_chunkSizeTargetObjects;
00069   hsize_t  m_maxChunkSizeBytes;
00070   int  m_minObjectsPerChunk;
00071   int  m_maxObjectsPerChunk;
00072   int  m_chunkCacheSizeTargetInChunks;
00073   hsize_t  m_maxChunkCacheSizeBytes;
00074 
00075   // Copy constructor and assignment are disabled by default
00076   ChunkPolicy ( const ChunkPolicy& ) ;
00077   ChunkPolicy& operator = ( const ChunkPolicy& ) ;
00078 
00079 };
00080 
00081 } // namespace Translator
00082 
00083 #endif // TRANSLATOR_CHUNKPOLICY_H

Generated on 19 Dec 2016 for PSDMSoftware by  doxygen 1.4.7