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