Class ColumnTwoPassFNTStrategy

  • All Implemented Interfaces:
    org.apfloat.internal.Parallelizable, org.apfloat.spi.NTTStrategy

    public class ColumnTwoPassFNTStrategy
    extends org.apfloat.internal.TwoPassFNTStrategy
    Two-pass 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.

    Note that if the data size is too big compared to the maximum available memory then the data is read from disk in too thin slices and the level of parallelism may become too small for the GPU, ruining the performance. The GPU global size i.e. the number of columns read from the data matrix to memory at one time 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.AbstractStepFNTStrategy

        stepStrategy
    • Constructor Summary

      Constructors 
      Constructor Description
      ColumnTwoPassFNTStrategy​(org.apfloat.spi.NTTStepStrategy stepStrategy)
      Basic constructor.
    • Method Summary

      Modifier and Type Method Description
      protected org.apfloat.spi.ArrayAccess getColumns​(org.apfloat.spi.DataStorage dataStorage, int startColumn, int columns, int rows)  
      protected org.apfloat.spi.ArrayAccess getRows​(org.apfloat.spi.DataStorage dataStorage, int startRow, int rows, int columns)  
      protected void multiplyElements​(org.apfloat.spi.ArrayAccess arrayAccess, int startRow, int startColumn, int rows, int columns, long length, long totalTransformLength, boolean isInverse, int modulus)  
      • Methods inherited from class org.apfloat.internal.TwoPassFNTStrategy

        inverseTransform, transform, transformColumns, transformRows
      • Methods inherited from class org.apfloat.internal.AbstractStepFNTStrategy

        getTransformLength, inverseTransform, transform
    • Constructor Detail

      • ColumnTwoPassFNTStrategy

        public ColumnTwoPassFNTStrategy​(org.apfloat.spi.NTTStepStrategy stepStrategy)
        Basic constructor.
        Parameters:
        stepStrategy - A step strategy that can process data in columns.
    • Method Detail

      • getColumns

        protected org.apfloat.spi.ArrayAccess getColumns​(org.apfloat.spi.DataStorage dataStorage,
                                                         int startColumn,
                                                         int columns,
                                                         int rows)
        Overrides:
        getColumns in class org.apfloat.internal.TwoPassFNTStrategy
      • getRows

        protected org.apfloat.spi.ArrayAccess getRows​(org.apfloat.spi.DataStorage dataStorage,
                                                      int startRow,
                                                      int rows,
                                                      int columns)
        Overrides:
        getRows in class org.apfloat.internal.TwoPassFNTStrategy
      • multiplyElements

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