Implementations of Fast Furier Transformation using OpenCL. More...
#include "viennacl/forwards.h"#include "viennacl/ocl/device.hpp"#include "viennacl/ocl/kernel.hpp"#include "viennacl/traits/handle.hpp"#include "viennacl/traits/stride.hpp"#include "viennacl/linalg/host_based/fft_operations.hpp"#include "viennacl/linalg/opencl/kernels/fft.hpp"#include "viennacl/linalg/opencl/kernels/matrix.hpp"#include <viennacl/vector.hpp>#include <viennacl/matrix.hpp>#include <cmath>#include <stdexcept>Go to the source code of this file.
Namespaces | |
| viennacl | |
| Main namespace in ViennaCL. Holds all the basic types such as vector, matrix, etc. and defines operations upon them. | |
| viennacl::linalg | |
| Provides all linear algebra operations which are not covered by operator overloads. | |
| viennacl::linalg::detail | |
| Namespace holding implementation details for linear algebra routines. Usually not of interest for a library user. | |
| viennacl::linalg::detail::fft | |
| viennacl::linalg::opencl | |
| Holds all routines providing OpenCL linear algebra operations. | |
Functions | |
| vcl_size_t | viennacl::linalg::detail::fft::num_bits (vcl_size_t size) |
| Get number of bits. More... | |
| vcl_size_t | viennacl::linalg::detail::fft::next_power_2 (vcl_size_t n) |
| Find next power of two. More... | |
| template<typename NumericT > | |
| void | viennacl::linalg::opencl::direct (viennacl::ocl::handle< cl_mem > const &in, viennacl::ocl::handle< cl_mem > const &out, vcl_size_t size, vcl_size_t stride, vcl_size_t batch_num, NumericT sign=NumericT(-1), viennacl::linalg::host_based::detail::fft::FFT_DATA_ORDER::DATA_ORDER data_order=viennacl::linalg::host_based::detail::fft::FFT_DATA_ORDER::ROW_MAJOR) |
| Direct algorithm for computing Fourier transformation. More... | |
| template<typename NumericT > | |
| void | viennacl::linalg::opencl::reorder (viennacl::ocl::handle< cl_mem > const &in, vcl_size_t size, vcl_size_t stride, vcl_size_t bits_datasize, vcl_size_t batch_num, viennacl::linalg::host_based::detail::fft::FFT_DATA_ORDER::DATA_ORDER data_order=viennacl::linalg::host_based::detail::fft::FFT_DATA_ORDER::ROW_MAJOR) |
| template<typename NumericT > | |
| void | viennacl::linalg::opencl::radix2 (viennacl::ocl::handle< cl_mem > const &in, vcl_size_t size, vcl_size_t stride, vcl_size_t batch_num, NumericT sign=NumericT(-1), viennacl::linalg::host_based::detail::fft::FFT_DATA_ORDER::DATA_ORDER data_order=viennacl::linalg::host_based::detail::fft::FFT_DATA_ORDER::ROW_MAJOR) |
| Radix-2 algorithm for computing Fourier transformation. More... | |
| template<typename NumericT , unsigned int AlignmentV> | |
| void | viennacl::linalg::opencl::bluestein (viennacl::vector< NumericT, AlignmentV > &in, viennacl::vector< NumericT, AlignmentV > &out, vcl_size_t) |
| Bluestein's algorithm for computing Fourier transformation. More... | |
| template<typename NumericT , unsigned int AlignmentV> | |
| void | viennacl::linalg::opencl::multiply_complex (viennacl::vector< NumericT, AlignmentV > const &input1, viennacl::vector< NumericT, AlignmentV > const &input2, viennacl::vector< NumericT, AlignmentV > &output) |
| Mutiply two complex vectors and store result in output. More... | |
| template<typename NumericT , unsigned int AlignmentV> | |
| void | viennacl::linalg::opencl::normalize (viennacl::vector< NumericT, AlignmentV > &input) |
| Normalize vector on with his own size. More... | |
| template<typename NumericT , unsigned int AlignmentV> | |
| void | viennacl::linalg::opencl::transpose (viennacl::matrix< NumericT, viennacl::row_major, AlignmentV > &input) |
| Inplace_transpose matrix. More... | |
| template<typename NumericT , unsigned int AlignmentV> | |
| void | viennacl::linalg::opencl::transpose (viennacl::matrix< NumericT, viennacl::row_major, AlignmentV > const &input, viennacl::matrix< NumericT, viennacl::row_major, AlignmentV > &output) |
| Transpose matrix. More... | |
| template<typename NumericT > | |
| void | viennacl::linalg::opencl::real_to_complex (viennacl::vector_base< NumericT > const &in, viennacl::vector_base< NumericT > &out, vcl_size_t size) |
| Create complex vector from real vector (even elements(2*k) = real part, odd elements(2*k+1) = imaginary part) More... | |
| template<typename NumericT > | |
| void | viennacl::linalg::opencl::complex_to_real (viennacl::vector_base< NumericT > const &in, viennacl::vector_base< NumericT > &out, vcl_size_t size) |
| Create real vector from complex vector (even elements(2*k) = real part, odd elements(2*k+1) = imaginary part) More... | |
| template<typename NumericT > | |
| void | viennacl::linalg::opencl::reverse (viennacl::vector_base< NumericT > &in) |
| Reverse vector to oposite order and save it in input vector. More... | |
Variables | |
| const vcl_size_t | viennacl::linalg::detail::fft::MAX_LOCAL_POINTS_NUM = 512 |
Implementations of Fast Furier Transformation using OpenCL.
Definition in file fft_operations.hpp.