|
1 | 1 | clFFT
|
2 | 2 | =====
|
| 3 | +[](https://travis-ci.org/clMathLibraries/clFFT) |
3 | 4 |
|
4 |
| -clMath is a software library containing FFT and BLAS functions written in OpenCL. In addition to GPU devices, the libraries also support running on CPU devices to facilitate debugging and multicore programming. |
| 5 | +clMath is a software library containing FFT and BLAS functions written |
| 6 | +in OpenCL. In addition to GPU devices, the libraries also support |
| 7 | +running on CPU devices to facilitate debugging and multicore |
| 8 | +programming. |
5 | 9 |
|
6 |
| -<a href="http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-math-libraries/">APPML 1.10</a> is the most current generally available version of the library, and pre-built binaries are available for download on both Linux and Windows platforms. |
| 10 | +clMath 2.1 is the latest version and is available as source only. |
| 11 | +clMath's predecessor APPML 1.10 has pre-built binaries available for |
| 12 | +download on both Linux and Windows platforms. |
7 | 13 |
|
8 | 14 | ## Introduction to clFFT
|
9 | 15 |
|
10 |
| -The FFT is an implementation of the Discrete Fourier Transform (DFT) that makes use of symmetries in the FFT definition to reduce the mathematical intensity required from O(N<sup>2</sup>) to O(N log<sub>2</sub>( N )) when the sequence length N is the product of small prime factors. Currently, there is no standard API for FFT routines. Hardware vendors usually provide a set of high-performance FFTs optimized for their systems: no two vendors employ the same interfaces for their FFT routines. clFFT provides a set of FFT routines that are optimized for AMD graphics processors, but also are functional across CPU and other compute devices. |
| 16 | +The FFT is an implementation of the Discrete Fourier Transform (DFT) |
| 17 | +that makes use of symmetries in the FFT definition to reduce the |
| 18 | +mathematical intensity required from O(N2) to O(N log2( N )) when the |
| 19 | +sequence length N is the product of small prime factors. Currently, |
| 20 | +there is no standard API for FFT routines. Hardware vendors usually |
| 21 | +provide a set of high-performance FFTs optimized for their systems: no |
| 22 | +two vendors employ the same interfaces for their FFT routines. clFFT |
| 23 | +provides a set of FFT routines that are optimized for AMD graphics |
| 24 | +processors, but also are functional across CPU and other compute |
| 25 | +devices. |
11 | 26 |
|
12 |
| -The clFFT library is an open source OpenCL library implementation of discrete Fast Fourier Transforms. It: |
| 27 | +The clFFT library is an open source OpenCL library implementation of |
| 28 | +discrete Fast Fourier Transforms. It: |
13 | 29 |
|
14 |
| -* Provides a fast and accurate platform for calculating discrete FFTs. |
15 |
| -* Works on CPU or GPU backends. |
16 |
| -* Supports in-place or out-of-place transforms. |
17 |
| -* Supports 1D, 2D, and 3D transforms with a batch size that can be greater than 1. |
18 |
| -* Supports planar (real and complex components in separate arrays) and interleaved (real and complex components as a pair contiguous in memory) formats. |
19 |
| -* Supports dimension lengths that can be any mix of powers of 2, 3, and 5. |
20 |
| -* Supports single and double precision floating point formats. |
| 30 | +- Provides a fast and accurate platform for calculating discrete FFTs. |
| 31 | + |
| 32 | +- Works on CPU or GPU backends. |
| 33 | + |
| 34 | +- Supports in-place or out-of-place transforms. |
| 35 | + |
| 36 | +- Supports 1D, 2D, and 3D transforms with a batch size that can be |
| 37 | + greater than 1. |
| 38 | + |
| 39 | +- Supports planar (real and complex components in separate arrays) and |
| 40 | + interleaved (real and complex components as a pair contiguous in |
| 41 | + memory) formats. |
| 42 | + |
| 43 | +- Supports dimension lengths that can be any mix of powers of 2, 3, |
| 44 | + and 5. |
| 45 | + |
| 46 | +- Supports single and double precision floating point formats. |
21 | 47 |
|
22 | 48 | ## clFFT library user documentation
|
23 |
| -[Library and API documentation]( http://clmathlibraries.github.io/clFFT/ ) for developers is available online as a GitHub Pages website |
| 49 | + |
| 50 | +[Library and API documentation][] for developers is available online as |
| 51 | +a GitHub Pages website |
| 52 | + |
| 53 | +### Google Groups |
| 54 | + |
| 55 | +Two mailing lists have been created for the clMath projects: |
| 56 | + |
| 57 | +- [[email protected]][] - group whose focus is to answer |
| 58 | + questions on using the library or reporting issues |
| 59 | + |
| 60 | +- [[email protected]][] - group whose focus is for |
| 61 | + developers interested in contributing to the library code itself |
24 | 62 |
|
25 | 63 | ## clFFT Wiki
|
26 |
| -The [project wiki](https://github.com/clMathLibraries/clFFT/wiki) contains helpful documentation, including a [build primer](https://github.com/clMathLibraries/clFFT/wiki/Build) |
| 64 | + |
| 65 | +The [project wiki ][[email protected]] contains helpful |
| 66 | +documentation, including a [build |
| 67 | + |
27 | 68 |
|
28 | 69 | ## Contributing code
|
29 |
| -Please refer to and read the [Contributing](CONTRIBUTING.md) document for guidelines on how to contribute code to this open source project |
| 70 | + |
| 71 | +Please refer to and read the [Contributing][] document for guidelines on |
| 72 | +how to contribute code to this open source project. The code in the |
| 73 | +/master branch is considered to be stable, and all pull-requests should |
| 74 | +be made against the /develop branch. |
30 | 75 |
|
31 | 76 | ## License
|
32 |
| -The source for clFFT is licensed under the [Apache License, Version 2.0]( http://www.apache.org/licenses/LICENSE-2.0 ) |
| 77 | + |
| 78 | +The source for clFFT is licensed under the [Apache License, Version |
| 79 | +2.0][] |
33 | 80 |
|
34 | 81 | ## Example
|
35 |
| -The simple example below shows how to use clFFT to compute an simple 1D forward transform |
36 | 82 |
|
| 83 | +The simple example below shows how to use clFFT to compute an simple 1D |
| 84 | +forward transform |
37 | 85 | ```c
|
38 | 86 | #include <stdlib.h>
|
39 | 87 |
|
@@ -122,21 +170,43 @@ int main( void )
|
122 | 170 | ```
|
123 | 171 |
|
124 | 172 | ## Build dependencies
|
| 173 | +
|
125 | 174 | ### Library for Windows
|
126 |
| -* Windows® 7/8 |
127 |
| -* Visual Studio 2010 SP1, 2012 |
128 |
| -* Latest CMake |
129 |
| -* An OpenCL SDK, such as APP SDK 2.8 |
| 175 | +
|
| 176 | +- Windows® 7/8 |
| 177 | +
|
| 178 | +- Visual Studio 2010 SP1, 2012 |
| 179 | +
|
| 180 | +- Latest CMake |
| 181 | +
|
| 182 | +- An OpenCL SDK, such as APP SDK 2.9 |
130 | 183 |
|
131 | 184 | ### Library for Linux
|
132 |
| -* GCC 4.6 and onwards |
133 |
| -* Latest CMake |
134 |
| -* An OpenCL SDK, such as APP SDK 2.8 |
| 185 | +
|
| 186 | +- GCC 4.6 and onwards |
| 187 | +
|
| 188 | +- Latest CMake |
| 189 | +
|
| 190 | +- An OpenCL SDK, such as APP SDK 2.9 |
| 191 | +
|
| 192 | +### Library for Mac OSX |
| 193 | +
|
| 194 | +- Recommended to generate Unix makefiles with cmake |
135 | 195 |
|
136 | 196 | ### Test infrastructure
|
137 |
| -* Latest Googletest |
138 |
| -* Latest FFTW |
139 |
| -* Latest Boost |
| 197 | +
|
| 198 | +- Googletest v1.6 |
| 199 | +
|
| 200 | +- Latest FFTW |
| 201 | +
|
| 202 | +- Latest Boost |
140 | 203 |
|
141 | 204 | ### Performance infrastructure
|
142 |
| -* Python |
| 205 | +
|
| 206 | +- Python |
| 207 | +
|
| 208 | + [Library and API documentation]: http://clmathlibraries.github.io/clFFT/ |
| 209 | + [[email protected]]: https://github.com/clMathLibraries/clFFT/wiki |
| 210 | + [[email protected]]: https://github.com/clMathLibraries/clFFT/wiki/Build |
| 211 | + [Contributing]: CONTRIBUTING.md |
| 212 | + [Apache License, Version 2.0]: http://www.apache.org/licenses/LICENSE-2.0 |
0 commit comments