All Implemented Interfaces:
Serializable
Direct Known Subclasses:
MatrixObjectFuture

public class MatrixObject extends CacheableData<MatrixBlock>
Represents a matrix in control program. This class contains method to read matrices from HDFS and convert them to a specific format/representation. It is also able to write several formats/representation of matrices to HDFS. IMPORTANT: Preserve one-to-one correspondence between MatrixObject and MatrixBlock objects, for cache purposes. Do not change a MatrixBlock object without informing its MatrixObject object.
See Also:
  • Constructor Details

    • MatrixObject

      public MatrixObject(Types.ValueType vt, String file)
      Constructor that takes the value type and the HDFS filename.
      Parameters:
      vt - value type
      file - file name
    • MatrixObject

      public MatrixObject(Types.ValueType vt, String file, MetaData mtd)
      Constructor that takes the value type, HDFS filename and associated metadata.
      Parameters:
      vt - value type
      file - file name
      mtd - metadata
    • MatrixObject

      public MatrixObject(Types.ValueType vt, String file, MetaData mtd, MatrixBlock data)
      Constructor that takes the value type, HDFS filename and associated metadata and a MatrixBlock used for creation after serialization
      Parameters:
      vt - value type
      file - file name
      mtd - metadata
      data - matrix block data
    • MatrixObject

      public MatrixObject(MatrixObject mo)
      Copy constructor that copies meta data but NO data.
      Parameters:
      mo - matrix object
  • Method Details

    • setUpdateType

      public void setUpdateType(MatrixObject.UpdateType flag)
    • getUpdateType

      public MatrixObject.UpdateType getUpdateType()
    • isDiag

      public boolean isDiag()
    • setDiag

      public void setDiag(boolean diag)
    • setMarkForLinCache

      public void setMarkForLinCache(boolean mark)
    • isMarked

      public boolean isMarked()
    • updateDataCharacteristics

      public void updateDataCharacteristics(DataCharacteristics dc)
      Overrides:
      updateDataCharacteristics in class Data
    • refreshMetaData

      public void refreshMetaData()
      Make the matrix metadata consistent with the in-memory matrix data
      Specified by:
      refreshMetaData in class CacheableData<MatrixBlock>
    • getBlocksize

      public int getBlocksize()
      Overrides:
      getBlocksize in class CacheableData<MatrixBlock>
    • getNnz

      public long getNnz()
    • getSparsity

      public double getSparsity()
    • setPartitioned

      public void setPartitioned(ParForProgramBlock.PDataPartitionFormat format, int n)
    • unsetPartitioned

      public void unsetPartitioned()
    • isPartitioned

      public boolean isPartitioned()
    • getPartitionFormat

      public ParForProgramBlock.PDataPartitionFormat getPartitionFormat()
    • getPartitionSize

      public int getPartitionSize()
    • setInMemoryPartition

      public void setInMemoryPartition(MatrixBlock block)
    • readMatrixPartition

      public MatrixBlock readMatrixPartition(IndexRange pred)
      NOTE: for reading matrix partitions, we could cache (in its real sense) the read block with soft references (no need for eviction, as partitioning only applied for read-only matrices). However, since we currently only support row- and column-wise partitioning caching is not applied yet. This could be changed once we also support column-block-wise and row-block-wise. Furthermore, as we reject to partition vectors and support only full row or column indexing, no metadata (apart from the partition flag) is required.
      Parameters:
      pred - index range
      Returns:
      matrix block
    • getPartitionFileName

      public String getPartitionFileName(IndexRange pred, int blen)
    • isCompressed

      public boolean isCompressed()
      Overrides:
      isCompressed in class CacheableData<MatrixBlock>
    • toString

      public String toString()
      Overrides:
      toString in class CacheableData<MatrixBlock>