Class ObjectMatrixBuf<T>

java.lang.Object
edu.rit.mp.Buf
edu.rit.mp.ObjectBuf<T>
edu.rit.mp.buf.ObjectMatrixBuf<T>
Type Parameters:
T - Data type of the objects in the buffer.
Direct Known Subclasses:
ObjectMatrixBuf_1

public class ObjectMatrixBuf<T> extends ObjectBuf<T>
Class ObjectMatrixBuf provides a buffer for a matrix of object items sent or received using the Message Protocol (MP). The matrix row and column strides may be 1 or greater than 1. While an instance of class ObjectMatrixBuf may be constructed directly, normally you will use a factory method in class ObjectBuf. See that class for further information.
Version:
23-Mar-2009
Author:
Alan Kaminsky
  • Constructor Details

    • ObjectMatrixBuf

      public ObjectMatrixBuf(T[][] theMatrix, Range theRowRange, Range theColRange)
      Construct a new object matrix buffer. It is assumed that the rows and columns of theMatrix are allocated and that each row of theMatrix has the same number of columns.
      Parameters:
      theMatrix - Matrix.
      theRowRange - Range of rows to include.
      theColRange - Range of columns to include.
  • Method Details

    • get

      public T get(int i)
      Obtain the given item from this buffer.

      The get() method must not block the calling thread; if it does, all message I/O in MP will be blocked. Obtain the given item from this buffer.

      The get() method must not block the calling thread; if it does, all message I/O in MP will be blocked.

      Specified by:
      get in class ObjectBuf<T>
      Parameters:
      i - Item index in the range 0 .. length()-1.
      Returns:
      Item at index i.
    • put

      public void put(int i, T item)
      Store the given item in this buffer.

      The put() method must not block the calling thread; if it does, all message I/O in MP will be blocked.

      Specified by:
      put in class ObjectBuf<T>
      Parameters:
      i - Item index in the range 0 .. length()-1.
      item - Item to be stored at index i.
    • copy

      public void copy(Buf theSrc)
      Copy items from the given buffer to this buffer. The number of items copied is this buffer's length or theSrc's length, whichever is smaller. If theSrc is this buffer, the copy() method does nothing. Copy items from the given buffer to this buffer. The number of items copied is this buffer's length or theSrc's length, whichever is smaller. If theSrc is this buffer, the copy() method does nothing.

      The default implementation of the copy() method calls the defaultCopy() method. A subclass can override the copy() method to use a more efficient algorithm.

      The default implementation of the copy() method also calls the reset() method. Copy items from the given buffer to this buffer. The number of items copied is this buffer's length or theSrc's length, whichever is smaller. If theSrc is this buffer, the copy() method does nothing.

      Overrides:
      copy in class ObjectBuf<T>
      Parameters:
      theSrc - Source of items to copy into this buffer.
      Throws:
      ClassCastException - (unchecked exception) Thrown if theSrc's item data type is not the same as this buffer's item data type.
    • getReductionBuf

      public Buf getReductionBuf(Op op)
      Create a buffer for performing parallel reduction using the given binary operation. The results of the reduction are placed into this buffer.

      Operations performed on the returned reduction buffer have the same effect as operations performed on this buffer, except whenever a source item S is put into a destination item D in this buffer, D is set to D op S, that is, the reduction of D and S using the given binary operation (rather than just setting D to S). Create a buffer for performing parallel reduction using the given binary operation. The results of the reduction are placed into this buffer.

      Specified by:
      getReductionBuf in class Buf
      Parameters:
      op - Binary operation.
      Returns:
      a Buf object.
      Throws:
      ClassCastException - (unchecked exception) Thrown if this buffer's element data type and the given binary operation's argument data type are not the same.