casa
$Rev:20696$
|
a class for caching image access via tiles More...
#include <LatticeCache.h>
Public Member Functions | |
LatticeCache (Lattice< T > &image, Int cacheSize, IPosition tileShape, Vector< Float > &tileOverlap, Bool additive) | |
Constructor: cachesize in units of T. | |
LatticeCache (const LatticeCache< T > &other) | |
LatticeCache< T > & | operator= (const LatticeCache< T > &other) |
virtual | ~LatticeCache () |
Array< T > & | tile (IPosition &cacheLoc, const IPosition &tileLoc, Bool discard=True) |
Return the tile for a given location. | |
Array< T > & | tile (const IPosition &tileLoc, Bool discard=True) |
const Array< T > & | tile (const IPosition &tileLoc) |
const version is needed | |
IPosition & | cacheLocation (IPosition &cacheLoc, const IPosition &tileLoc) |
Return the IPosition for the start of this tile. | |
virtual void | showCacheStatistics (ostream &os) |
Show the statistics of cache access. | |
virtual void | clearCacheStatistics () |
Clear the statistics of cache access. | |
virtual void | flush () |
Flush contents. | |
Protected Member Functions | |
LatticeCache () | |
Int | getFreeTile (Bool readonly) |
void | writeTile (Int tile) |
void | readTile (Int tile, Bool readonly) |
Protected Attributes | |
Int | numberTiles |
IPosition | tileShape |
Vector< Int > | tileShapeVec |
Vector< Int > | tileOffsetVec |
Vector< Float > | tileOverlap |
Bool | additive |
Int | cacheSize |
Int | cacheAccesses |
Int | cacheHits |
Int | cacheMisses |
Int | cacheReads |
Int | cacheWrites |
Block< IPosition > | tileLocs |
Block< Int > | tileSequence |
Block< Array< T > > | tileContents |
Lattice< T > * | image_p |
a class for caching image access via tiles
Public interface
This class divides an image into Tiles that are stored in a Cache.
An image is divided into tiles of a specified shape. Access to the image pixels is via these tiles. A cache of active tiles is kept in memory up to a specified limit in memory allocation. Tiles are flushed to disk using a Least-Recently-Used Criterion.
The tile size specified is the maximum dimension. Near the edge, smaller tiles are returned if necessary.
The offset needed to get back to true pixels is also available.
The cache hit rate for a sufficient number of random accesses goes as the ratio of cache size to image size.
Tiles may be overlapped. If there is any overlap then the caller is responsible for dealing with the overlap. Normally one will only want overlapping windows for additive operations in which case the additive flag to the constructor should be used.
To aid in gridding
Definition at line 94 of file LatticeCache.h.
casa::LatticeCache< T >::LatticeCache | ( | Lattice< T > & | image, |
Int | cacheSize, | ||
IPosition | tileShape, | ||
Vector< Float > & | tileOverlap, | ||
Bool | additive | ||
) |
Constructor: cachesize in units of T.
tileOverlap is the fractional overlap between neighbouring tile.
casa::LatticeCache< T >::LatticeCache | ( | const LatticeCache< T > & | other | ) |
virtual casa::LatticeCache< T >::~LatticeCache | ( | ) | [virtual] |
casa::LatticeCache< T >::LatticeCache | ( | ) | [inline, protected] |
Definition at line 132 of file LatticeCache.h.
IPosition& casa::LatticeCache< T >::cacheLocation | ( | IPosition & | cacheLoc, |
const IPosition & | tileLoc | ||
) |
Return the IPosition for the start of this tile.
virtual void casa::LatticeCache< T >::clearCacheStatistics | ( | ) | [virtual] |
Clear the statistics of cache access.
virtual void casa::LatticeCache< T >::flush | ( | ) | [virtual] |
Flush contents.
Int casa::LatticeCache< T >::getFreeTile | ( | Bool | readonly | ) | [protected] |
LatticeCache<T>& casa::LatticeCache< T >::operator= | ( | const LatticeCache< T > & | other | ) |
void casa::LatticeCache< T >::readTile | ( | Int | tile, |
Bool | readonly | ||
) | [protected] |
virtual void casa::LatticeCache< T >::showCacheStatistics | ( | ostream & | os | ) | [virtual] |
Show the statistics of cache access.
Array<T>& casa::LatticeCache< T >::tile | ( | IPosition & | cacheLoc, |
const IPosition & | tileLoc, | ||
Bool | discard = True |
||
) |
Return the tile for a given location.
Array<T>& casa::LatticeCache< T >::tile | ( | const IPosition & | tileLoc, |
Bool | discard = True |
||
) |
const Array<T>& casa::LatticeCache< T >::tile | ( | const IPosition & | tileLoc | ) |
const version is needed
void casa::LatticeCache< T >::writeTile | ( | Int | tile | ) | [protected] |
Bool casa::LatticeCache< T >::additive [protected] |
Definition at line 138 of file LatticeCache.h.
Int casa::LatticeCache< T >::cacheAccesses [protected] |
Definition at line 141 of file LatticeCache.h.
Int casa::LatticeCache< T >::cacheHits [protected] |
Definition at line 142 of file LatticeCache.h.
Int casa::LatticeCache< T >::cacheMisses [protected] |
Definition at line 143 of file LatticeCache.h.
Int casa::LatticeCache< T >::cacheReads [protected] |
Definition at line 144 of file LatticeCache.h.
Int casa::LatticeCache< T >::cacheSize [protected] |
Definition at line 140 of file LatticeCache.h.
Int casa::LatticeCache< T >::cacheWrites [protected] |
Definition at line 145 of file LatticeCache.h.
Lattice<T>* casa::LatticeCache< T >::image_p [protected] |
Definition at line 156 of file LatticeCache.h.
Int casa::LatticeCache< T >::numberTiles [protected] |
Definition at line 132 of file LatticeCache.h.
Block<Array<T> > casa::LatticeCache< T >::tileContents [protected] |
Definition at line 151 of file LatticeCache.h.
Block<IPosition> casa::LatticeCache< T >::tileLocs [protected] |
Definition at line 149 of file LatticeCache.h.
Vector<Int> casa::LatticeCache< T >::tileOffsetVec [protected] |
Definition at line 136 of file LatticeCache.h.
Vector<Float> casa::LatticeCache< T >::tileOverlap [protected] |
Definition at line 137 of file LatticeCache.h.
Block<Int> casa::LatticeCache< T >::tileSequence [protected] |
Definition at line 150 of file LatticeCache.h.
IPosition casa::LatticeCache< T >::tileShape [protected] |
Definition at line 135 of file LatticeCache.h.
Vector<Int> casa::LatticeCache< T >::tileShapeVec [protected] |
Definition at line 136 of file LatticeCache.h.