KJB
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
clFFT.h
Go to the documentation of this file.
1 
2 //
3 // File: clFFT.h
4 //
5 // Version: <1.0>
6 //
7 // Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Inc. ("Apple")
8 // in consideration of your agreement to the following terms, and your use,
9 // installation, modification or redistribution of this Apple software
10 // constitutes acceptance of these terms. If you do not agree with these
11 // terms, please do not use, install, modify or redistribute this Apple
12 // software.
13 //
14 // In consideration of your agreement to abide by the following terms, and
15 // subject to these terms, Apple grants you a personal, non - exclusive
16 // license, under Apple's copyrights in this original Apple software ( the
17 // "Apple Software" ), to use, reproduce, modify and redistribute the Apple
18 // Software, with or without modifications, in source and / or binary forms;
19 // provided that if you redistribute the Apple Software in its entirety and
20 // without modifications, you must retain this notice and the following text
21 // and disclaimers in all such redistributions of the Apple Software. Neither
22 // the name, trademarks, service marks or logos of Apple Inc. may be used to
23 // endorse or promote products derived from the Apple Software without specific
24 // prior written permission from Apple. Except as expressly stated in this
25 // notice, no other rights or licenses, express or implied, are granted by
26 // Apple herein, including but not limited to any patent rights that may be
27 // infringed by your derivative works or by other works in which the Apple
28 // Software may be incorporated.
29 //
30 // The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO
31 // WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
32 // WARRANTIES OF NON - INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A
33 // PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION
34 // ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
35 //
36 // IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR
37 // CONSEQUENTIAL DAMAGES ( INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
38 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
39 // INTERRUPTION ) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION
40 // AND / OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER
41 // UNDER THEORY OF CONTRACT, TORT ( INCLUDING NEGLIGENCE ), STRICT LIABILITY OR
42 // OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
43 //
44 // Copyright ( C ) 2008 Apple Inc. All Rights Reserved.
45 //
47 
48 
49 #ifndef __CLFFT_H
50 #define __CLFFT_H
51 
52 #ifdef KJB_HAVE_OPENCL
53 #include <gpu_cpp/gpu_opencl.h>
54 
55 #ifdef __cplusplus
56 extern "C" {
57 #endif
58 
59 #include <stdio.h>
60 
61 // XForm type
62 typedef enum
63 {
64  clFFT_Forward = -1,
65  clFFT_Inverse = 1
66 
67 }clFFT_Direction;
68 
69 // XForm dimension
70 typedef enum
71 {
72  clFFT_1D = 0,
73  clFFT_2D = 1,
74  clFFT_3D = 3
75 
76 }clFFT_Dimension;
77 
78 // XForm Data type
79 typedef enum
80 {
81  clFFT_SplitComplexFormat = 0,
82  clFFT_InterleavedComplexFormat = 1
83 }clFFT_DataFormat;
84 
85 typedef struct
86 {
87  unsigned int x;
88  unsigned int y;
89  unsigned int z;
90 }clFFT_Dim3;
91 
92 typedef struct
93 {
94  float *real;
95  float *imag;
96 } clFFT_SplitComplex;
97 
98 typedef struct
99 {
100  float real;
101  float imag;
102 }clFFT_Complex;
103 
104 typedef void* clFFT_Plan;
105 
106 clFFT_Plan clFFT_CreatePlan( cl_context context, clFFT_Dim3 n, clFFT_Dimension dim, clFFT_DataFormat dataFormat, cl_int *error_code );
107 
108 void clFFT_DestroyPlan( clFFT_Plan plan );
109 
110 cl_int clFFT_ExecuteInterleaved( cl_command_queue queue, clFFT_Plan plan, cl_int batchSize, clFFT_Direction dir,
111  cl_mem data_in, cl_mem data_out,
112  cl_int num_events, cl_event *event_list, cl_event *event );
113 
114 cl_int clFFT_ExecutePlannar( cl_command_queue queue, clFFT_Plan plan, cl_int batchSize, clFFT_Direction dir,
115  cl_mem data_in_real, cl_mem data_in_imag, cl_mem data_out_real, cl_mem data_out_imag,
116  cl_int num_events, cl_event *event_list, cl_event *event );
117 
118 cl_int clFFT_1DTwistInterleaved(clFFT_Plan Plan, cl_command_queue queue, cl_mem array,
119  size_t numRows, size_t numCols, size_t startRow, size_t rowsToProcess, clFFT_Direction dir);
120 
121 
122 cl_int clFFT_1DTwistPlannar(clFFT_Plan Plan, cl_command_queue queue, cl_mem array_real, cl_mem array_imag,
123  size_t numRows, size_t numCols, size_t startRow, size_t rowsToProcess, clFFT_Direction dir);
124 
125 void clFFT_DumpPlan( clFFT_Plan plan, FILE *file);
126 
127 #ifdef __cplusplus
128 }
129 #endif
130 
131 #endif
132 #endif /* KJB_HAVE_OPENCL */
x
Definition: APPgetLargeConnectedEdges.m:100