Class IntAparapiMatrixStrategy

  • All Implemented Interfaces:
    MatrixStrategy

    public class IntAparapiMatrixStrategy
    extends Object
    implements MatrixStrategy
    Matrix transposition in the GPU for the int type.
    Since:
    1.8.3
    Version:
    1.8.3
    Author:
    Mikko Tommila
    • Constructor Detail

      • IntAparapiMatrixStrategy

        public IntAparapiMatrixStrategy()
        Default constructor.
    • Method Detail

      • transpose

        public void transpose​(ArrayAccess arrayAccess,
                              int n1,
                              int n2)
                       throws ApfloatRuntimeException
        Description copied from interface: MatrixStrategy
        Transpose a n1 x n2 matrix.

        Both n1 and n2 must be powers of two. Additionally, one of these must be true:

        n1 = n2
        n1 = 2*n2
        n2 = 2*n1

        Specified by:
        transpose in interface MatrixStrategy
        Parameters:
        arrayAccess - Accessor to the matrix data. This data will be transposed.
        n1 - Number of rows in the matrix.
        n2 - Number of columns in the matrix.
        Throws:
        ApfloatRuntimeException
      • transposeSquare

        public void transposeSquare​(ArrayAccess arrayAccess,
                                    int n1,
                                    int n2)
                             throws ApfloatRuntimeException
        Description copied from interface: MatrixStrategy
        Transpose a square n1 x n1 block of n1 x n2 matrix.

        Both n1 and n2 must be powers of two, and n1 <= n2.

        Specified by:
        transposeSquare in interface MatrixStrategy
        Parameters:
        arrayAccess - Accessor to the matrix data. This data will be transposed.
        n1 - Number of rows and columns in the block to be transposed.
        n2 - Number of columns in the matrix.
        Throws:
        ApfloatRuntimeException
      • permuteToHalfWidth

        public void permuteToHalfWidth​(ArrayAccess arrayAccess,
                                       int n1,
                                       int n2)
                                throws ApfloatRuntimeException
        Description copied from interface: MatrixStrategy
        Permute the rows of the n1 x n2 matrix so that it is shaped like a 2*n1 x n2/2 matrix. Logically, the matrix is split in half, and the right half is moved below the left half.

        Both n1 and n2 must be powers of two. E.g. if the matrix layout is originally as follows:

        Matrix before
        01234567
        89101112131415

        Then after this method it is as follows:

        Matrix after
        0123
        891011
        4567
        12131415
        Specified by:
        permuteToHalfWidth in interface MatrixStrategy
        Parameters:
        arrayAccess - Accessor to the matrix data. This data will be permuted.
        n1 - Number of rows in the matrix.
        n2 - Number of columns in the matrix.
        Throws:
        ApfloatRuntimeException
      • permuteToDoubleWidth

        public void permuteToDoubleWidth​(ArrayAccess arrayAccess,
                                         int n1,
                                         int n2)
                                  throws ApfloatRuntimeException
        Description copied from interface: MatrixStrategy
        Permute the rows of the n1 x n2 matrix so that it is shaped like a n1/2 x 2*n2 matrix. Logically, the matrix is split in half, and the lower half is moved to the right side of the upper half.

        Both n1 and n2 must be powers of two, and n1 >= 2.

        E.g. if the matrix layout is originally as follows:

        Matrix before
        0123
        4567
        891011
        12131415

        Then after this method it is as follows:

        Matrix after
        0123891011
        456712131415
        Specified by:
        permuteToDoubleWidth in interface MatrixStrategy
        Parameters:
        arrayAccess - Accessor to the matrix data. This data will be permuted.
        n1 - Number of rows in the matrix.
        n2 - Number of columns in the matrix.
        Throws:
        ApfloatRuntimeException