Class AOffset
- java.lang.Object
-
- org.apache.sysds.runtime.compress.colgroup.offset.AOffset
-
- All Implemented Interfaces:
Serializable
- Direct Known Subclasses:
AOffsetByte
,OffsetChar
,OffsetEmpty
,OffsetSingle
,OffsetTwo
public abstract class AOffset extends Object implements Serializable
Offset list encoder interface. It is assumed that the input is in sorted order, all values are positive and there are no duplicates. The no duplicate is important since 0 values are exploited to encode an offset of max representable value + 1. This gives the ability to encode data, where the offsets are greater than the available highest value that can be represented size.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
AOffset.OffsetSliceInfo
-
Constructor Summary
Constructors Constructor Description AOffset()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description AOffset
append(AOffset t, int s)
Append the offsets from that other offset to the offsets in this.AOffset
appendN(AOffsetsGroup[] g, int s)
Append a list of offsets together in order.void
cacheIterator(AIterator it, int row)
Cache a iterator in use, note that there is no check for if the iterator is correctly positioned at the given rowvoid
constructSkipList()
boolean
equals(Object o)
boolean
equals(AOffset b)
abstract long
getExactSizeOnDisk()
Remember to include the ordinal of the type of offset list.abstract long
getInMemorySize()
Get the in memory size of the Offset objectabstract AIterator
getIterator()
Get an iterator of the offsets while also maintaining the data index pointer.AIterator
getIterator(int row)
Get an iterator that is pointing at a specific offset.abstract int
getLength()
Get the length of the underlying array.abstract AOffsetIterator
getOffsetIterator()
Get an OffsetIterator of current offsets not maintaining the data index.AOffsetIterator
getOffsetIterator(int row)
Get an iterator that is pointing only at offsets from specific offsetabstract int
getOffsetToFirst()
Get the offset to the first indexabstract int
getOffsetToLast()
Get the offset to the last valueabstract int
getSize()
Get the number of contained elements, This method iterate the entire offset list, so it is not constant lookup.abstract AOffset
moveIndex(int m)
Move the index start x cellsvoid
preAggregateDenseMap(MatrixBlock m, double[] preAV, int rl, int ru, int cl, int cu, int nVal, AMapToData data)
void
preAggregateSparseMap(SparseBlock sb, double[] preAV, int rl, int ru, int nVal, AMapToData data)
static AOffset
reverse(int numRows, AOffset offsets)
AOffset.OffsetSliceInfo
slice(int l, int u)
String
toString()
abstract void
write(DataOutput out)
Write the offsets to disk.
-
-
-
Method Detail
-
getIterator
public abstract AIterator getIterator()
Get an iterator of the offsets while also maintaining the data index pointer.- Returns:
- AIterator that iterate through index and dictionary offset values.
-
getOffsetIterator
public abstract AOffsetIterator getOffsetIterator()
Get an OffsetIterator of current offsets not maintaining the data index.- Returns:
- AIterator that iterator through the delta offsets.
-
getIterator
public AIterator getIterator(int row)
Get an iterator that is pointing at a specific offset.- Parameters:
row
- The row requested.- Returns:
- AIterator that iterate through index and dictionary offset values.
-
constructSkipList
public void constructSkipList()
-
getOffsetIterator
public AOffsetIterator getOffsetIterator(int row)
Get an iterator that is pointing only at offsets from specific offset- Parameters:
row
- The row requested.- Returns:
- AOffsetIterator that iterate through index only offset values.
-
cacheIterator
public void cacheIterator(AIterator it, int row)
Cache a iterator in use, note that there is no check for if the iterator is correctly positioned at the given row- Parameters:
it
- The Iterator to cacherow
- The row index to cache the iterator as.
-
write
public abstract void write(DataOutput out) throws IOException
Write the offsets to disk. If you implement another remember to write the ordinal of the new type to disk as well and add it to the OffsetFactory.- Parameters:
out
- The output to write to- Throws:
IOException
- Exception that happens if the IO fails to write.
-
getOffsetToFirst
public abstract int getOffsetToFirst()
Get the offset to the first index- Returns:
- The first index offset
-
getOffsetToLast
public abstract int getOffsetToLast()
Get the offset to the last value- Returns:
- The last values offset
-
getInMemorySize
public abstract long getInMemorySize()
Get the in memory size of the Offset object- Returns:
- In memory size as a long.
-
getExactSizeOnDisk
public abstract long getExactSizeOnDisk()
Remember to include the ordinal of the type of offset list.- Returns:
- the size on disk as a long.
-
getSize
public abstract int getSize()
Get the number of contained elements, This method iterate the entire offset list, so it is not constant lookup.- Returns:
- The number of indexes.
-
preAggregateDenseMap
public final void preAggregateDenseMap(MatrixBlock m, double[] preAV, int rl, int ru, int cl, int cu, int nVal, AMapToData data)
-
preAggregateSparseMap
public final void preAggregateSparseMap(SparseBlock sb, double[] preAV, int rl, int ru, int nVal, AMapToData data)
-
equals
public boolean equals(AOffset b)
-
moveIndex
public abstract AOffset moveIndex(int m)
Move the index start x cells- Parameters:
m
- The amount to move- Returns:
- The moved index.
-
getLength
public abstract int getLength()
Get the length of the underlying array. This does not reflect the number of contained elements, since some of the elements can be skips.- Returns:
- The length of the underlying arrays
-
slice
public AOffset.OffsetSliceInfo slice(int l, int u)
-
append
public AOffset append(AOffset t, int s)
Append the offsets from that other offset to the offsets in this.- Parameters:
t
- That offset/s
- The total length encoded in this offset.- Returns:
- this offsets followed by thats offsets.
-
appendN
public AOffset appendN(AOffsetsGroup[] g, int s)
Append a list of offsets together in order.- Parameters:
g
- The offsets to append together (note fist entry is equal to this)s
- The standard size of each g (except last, but that does not matter)- Returns:
- The combined offsets.
-
-