Class ColumnSixStepFNTStrategy

  • All Implemented Interfaces:
    org.apfloat.internal.Parallelizable, org.apfloat.spi.NTTStrategy
    Direct Known Subclasses:
    IntAparapiSixStepFNTStrategy, LongAparapiSixStepFNTStrategy

    public class ColumnSixStepFNTStrategy
    extends org.apfloat.internal.SixStepFNTStrategy
    Six-step NTT implementation that processes the data in the columns of the matrix.

    This transform only works together with an NTTStepStrategy implementation that processes the data in columns instead of rows and a MatrixStrategy implementation that can transpose the data.

    The data size should be sufficiently large to meet the parallelization needs of the GPU. The GPU global size i.e. the number of columns in the data matrix should be at least 1024.

    Since:
    1.8.3
    Version:
    1.8.3
    Author:
    Mikko Tommila
    • Field Summary

      • Fields inherited from class org.apfloat.internal.SixStepFNTStrategy

        matrixStrategy
      • Fields inherited from class org.apfloat.internal.AbstractStepFNTStrategy

        stepStrategy
    • Constructor Summary

      Constructors 
      Constructor Description
      ColumnSixStepFNTStrategy​(org.apfloat.spi.NTTStepStrategy stepStrategy, org.apfloat.spi.MatrixStrategy matrixStrategy)
      Basic constructor.
    • Method Summary

      Modifier and Type Method Description
      protected void multiplyElements​(org.apfloat.spi.ArrayAccess arrayAccess, int rows, int columns, long length, long totalTransformLength, boolean isInverse, int modulus)  
      protected void transposeInitial​(org.apfloat.spi.ArrayAccess arrayAccess, int n1, int n2, boolean isInverse)  
      protected void transposeMiddle​(org.apfloat.spi.ArrayAccess arrayAccess, int n1, int n2, boolean isInverse)  
      • Methods inherited from class org.apfloat.internal.SixStepFNTStrategy

        inverseTransform, postTransform, preTransform, transform, transformFirst, transformSecond, transposeFinal
      • Methods inherited from class org.apfloat.internal.AbstractStepFNTStrategy

        getTransformLength, inverseTransform, transform
    • Constructor Detail

      • ColumnSixStepFNTStrategy

        public ColumnSixStepFNTStrategy​(org.apfloat.spi.NTTStepStrategy stepStrategy,
                                        org.apfloat.spi.MatrixStrategy matrixStrategy)
        Basic constructor.
        Parameters:
        stepStrategy - A step strategy that can process data in columns.
        matrixStrategy - A matrix strategy that can process the data.
    • Method Detail

      • transposeInitial

        protected void transposeInitial​(org.apfloat.spi.ArrayAccess arrayAccess,
                                        int n1,
                                        int n2,
                                        boolean isInverse)
        Overrides:
        transposeInitial in class org.apfloat.internal.SixStepFNTStrategy
      • transposeMiddle

        protected void transposeMiddle​(org.apfloat.spi.ArrayAccess arrayAccess,
                                       int n1,
                                       int n2,
                                       boolean isInverse)
        Overrides:
        transposeMiddle in class org.apfloat.internal.SixStepFNTStrategy
      • multiplyElements

        protected void multiplyElements​(org.apfloat.spi.ArrayAccess arrayAccess,
                                        int rows,
                                        int columns,
                                        long length,
                                        long totalTransformLength,
                                        boolean isInverse,
                                        int modulus)
        Overrides:
        multiplyElements in class org.apfloat.internal.SixStepFNTStrategy