Class CLFFTPlan


  • public class CLFFTPlan
    extends java.lang.Object
    Author:
    notzed
    • Field Detail

      • context

        public org.jocl.cl_context context
      • dim

        int dim
      • kernel_string

        java.lang.StringBuilder kernel_string
      • program

        org.jocl.cl_program program
      • twist_kernel

        org.jocl.cl_kernel twist_kernel
      • temp_buffer_needed

        boolean temp_buffer_needed
      • last_batch_size

        int last_batch_size
      • tempmemobj

        org.jocl.cl_mem tempmemobj
      • tempmemobj_real

        org.jocl.cl_mem tempmemobj_real
      • tempmemobj_imag

        org.jocl.cl_mem tempmemobj_imag
      • max_localmem_fft_size

        int max_localmem_fft_size
      • max_work_item_per_workgroup

        int max_work_item_per_workgroup
      • max_radix

        int max_radix
      • min_mem_coalesce_width

        int min_mem_coalesce_width
      • num_local_mem_banks

        int num_local_mem_banks
      • baseKernels

        static java.lang.String baseKernels
      • twistKernelInterleaved

        static java.lang.String twistKernelInterleaved
      • twistKernelPlannar

        static java.lang.String twistKernelPlannar
    • Constructor Detail

      • CLFFTPlan

        public CLFFTPlan​(org.jocl.cl_context context,
                         int[] sizes,
                         CLFFTPlan.CLFFTDataFormat dataFormat,
                         org.jocl.cl_device_id gpu)
                  throws CLFFTPlan.InvalidContextException
        Create a new FFT plan. Use the matching executeInterleaved() or executePlanar() depending on the dataFormat specified.
        Parameters:
        context -
        sizes - Array of sizes for each dimension. The length of array defines how many dimensions there are.
        dataFormat - Data format, InterleavedComplex (array of complex) or SplitComplex (separate planar arrays).
        Throws:
        zephyr.cl.CLFFTPlan.InvalidContextException
        CLFFTPlan.InvalidContextException
    • Method Detail

      • release

        public void release()
        Release system resources.
      • allocateTemporaryBufferInterleaved

        void allocateTemporaryBufferInterleaved​(int batchSize)
      • executeInterleaved

        public void executeInterleaved​(org.jocl.cl_command_queue queue,
                                       int batchSize,
                                       CLFFTPlan.CLFFTDirection dir,
                                       org.jocl.cl_mem data_in,
                                       org.jocl.cl_mem data_out,
                                       org.jocl.cl_event condition,
                                       org.jocl.cl_event event)
        Calculate FFT on interleaved complex data.
        Parameters:
        queue -
        batchSize - How many instances to calculate. Use 1 for a single FFT.
        dir - Direction of calculation, Forward or Inverse.
        data_in - Input buffer.
        data_out - Output buffer. May be the same as data_in for in-place transform.
        condition - Condition to wait for. NOT YET IMPLEMENTED.
        event - Event to wait for completion. NOT YET IMPLEMENTED.
      • allocateTemporaryBufferPlanar

        void allocateTemporaryBufferPlanar​(int batchSize)
      • executePlanar

        public void executePlanar​(org.jocl.cl_command_queue queue,
                                  int batchSize,
                                  CLFFTPlan.CLFFTDirection dir,
                                  org.jocl.cl_mem data_in_real,
                                  org.jocl.cl_mem data_in_imag,
                                  org.jocl.cl_mem data_out_real,
                                  org.jocl.cl_mem data_out_imag,
                                  org.jocl.cl_event contition,
                                  org.jocl.cl_event event)
        Calculate FFT of planar data.
        Parameters:
        queue -
        batchSize -
        dir -
        data_in_real -
        data_in_imag -
        data_out_real -
        data_out_imag -
        contition -
        event -
      • dumpPlan

        public void dumpPlan​(java.io.OutputStream os)
        Dump the planner result to the output stream.
        Parameters:
        os - if null, System.out is used.
      • getBlockConfigAndKernelString

        private void getBlockConfigAndKernelString()
      • createKernelList

        private void createKernelList()
      • getPatchingRequired

        private boolean getPatchingRequired​(org.jocl.cl_device_id devices)
      • getMaxKernelWorkGroupSize

        long getMaxKernelWorkGroupSize​(org.jocl.cl_device_id devices)
      • log2

        int log2​(int x)
      • getRadixArray

        int getRadixArray​(int n,
                          int[] radixArray,
                          int maxRadix)
      • insertHeader

        void insertHeader​(java.lang.StringBuilder kernelString,
                          java.lang.String kernelName,
                          CLFFTPlan.CLFFTDataFormat dataFormat)
      • insertVariables

        void insertVariables​(java.lang.StringBuilder kStream,
                             int maxRadix)
      • formattedLoad

        void formattedLoad​(java.lang.StringBuilder kernelString,
                           int aIndex,
                           int gIndex,
                           CLFFTPlan.CLFFTDataFormat dataFormat)
      • formattedStore

        void formattedStore​(java.lang.StringBuilder kernelString,
                            int aIndex,
                            int gIndex,
                            CLFFTPlan.CLFFTDataFormat dataFormat)
      • insertGlobalLoadsAndTranspose

        int insertGlobalLoadsAndTranspose​(java.lang.StringBuilder kernelString,
                                          int N,
                                          int numWorkItemsPerXForm,
                                          int numXFormsPerWG,
                                          int R0,
                                          int mem_coalesce_width,
                                          CLFFTPlan.CLFFTDataFormat dataFormat)
      • insertGlobalStoresAndTranspose

        int insertGlobalStoresAndTranspose​(java.lang.StringBuilder kernelString,
                                           int N,
                                           int maxRadix,
                                           int Nr,
                                           int numWorkItemsPerXForm,
                                           int numXFormsPerWG,
                                           int mem_coalesce_width,
                                           CLFFTPlan.CLFFTDataFormat dataFormat)
      • insertfftKernel

        void insertfftKernel​(java.lang.StringBuilder kernelString,
                             int Nr,
                             int numIter)
      • insertTwiddleKernel

        void insertTwiddleKernel​(java.lang.StringBuilder kernelString,
                                 int Nr,
                                 int numIter,
                                 int Nprev,
                                 int len,
                                 int numWorkItemsPerXForm)
      • getPadding

        CLFFTPlan.fftPadding getPadding​(int numWorkItemsPerXForm,
                                        int Nprev,
                                        int numWorkItemsReq,
                                        int numXFormsPerWG,
                                        int Nr,
                                        int numBanks)
      • insertLocalStores

        void insertLocalStores​(java.lang.StringBuilder kernelString,
                               int numIter,
                               int Nr,
                               int numWorkItemsPerXForm,
                               int numWorkItemsReq,
                               int offset,
                               java.lang.String comp)
      • insertLocalLoads

        void insertLocalLoads​(java.lang.StringBuilder kernelString,
                              int n,
                              int Nr,
                              int Nrn,
                              int Nprev,
                              int Ncurr,
                              int numWorkItemsPerXForm,
                              int numWorkItemsReq,
                              int offset,
                              java.lang.String comp)
      • insertLocalLoadIndexArithmatic

        void insertLocalLoadIndexArithmatic​(java.lang.StringBuilder kernelString,
                                            int Nprev,
                                            int Nr,
                                            int numWorkItemsReq,
                                            int numWorkItemsPerXForm,
                                            int numXFormsPerWG,
                                            int offset,
                                            int midPad)
      • insertLocalStoreIndexArithmatic

        void insertLocalStoreIndexArithmatic​(java.lang.StringBuilder kernelString,
                                             int numWorkItemsReq,
                                             int numXFormsPerWG,
                                             int Nr,
                                             int offset,
                                             int midPad)
      • createLocalMemfftKernelString

        void createLocalMemfftKernelString()
      • getGlobalRadixInfo

        int getGlobalRadixInfo​(int n,
                               int[] radix,
                               int[] R1,
                               int[] R2)
      • createGlobalFFTKernelString

        void createGlobalFFTKernelString​(int n,
                                         int BS,
                                         CLFFTPlan.CLFFTKernelDir dir,
                                         int vertBS)