Ginkgo: gko::matrix::Fft Class Reference

| Ginkgo Generated from branch based on main. Ginkgo version 1.11.0 A numerical linear algebra library targeting many-core architectures

Loading...
Searching...
No Matches
gko::matrix::Fft Class Reference
Linear Operators » SpMV employing different Matrix formats | Linear Operators

This LinOp implements a 1D Fourier matrix using the FFT algorithm. More...

`#include <ginkgo/core/matrix/fft.hpp>`

Inheritance diagram for gko::matrix::Fft:
[legend]
Collaboration diagram for gko::matrix::Fft:
[legend]

## Public Types
using | value_type = std::complex<double>
using | index_type = int64
using | transposed_type = Fft
Public Types inherited from gko::EnablePolymorphicAssignment< Fft >
using | result_type

## Public Member Functions
std::unique_ptr< LinOp > | transpose () const override
| Returns a LinOp representing the transpose of the Transposable object.
std::unique_ptr< LinOp > | conj_transpose () const override
| Returns a LinOp representing the conjugate transpose of the Transposable object.
void | write (matrix_data< std::complex< float >, int32 > &data) const override
void | write (matrix_data< std::complex< float >, int64 > &data) const override
void | write (matrix_data< std::complex< double >, int32 > &data) const override
void | write (matrix_data< std::complex< double >, int64 > &data) const override
dim< 1 > | get_fft_size () const
bool | is_inverse () const
Public Member Functions inherited from gko::EnableLinOp< Fft >
const Fft * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) const
Public Member Functions inherited from gko::EnablePolymorphicAssignment< Fft >
void | convert_to (result_type *result) const override
void | move_to (result_type *result) override

## Static Public Member Functions
static std::unique_ptr< Fft > | create (std::shared_ptr< const Executor > exec)
| Creates an empty Fourier matrix.
static std::unique_ptr< Fft > | create (std::shared_ptr< const Executor > exec, size_type size=0, bool inverse=false)
| Creates an Fourier matrix with the given dimensions.

## Friends
class | EnablePolymorphicObject< Fft, LinOp >

## Detailed Description

This LinOp implements a 1D Fourier matrix using the FFT algorithm.

It implements forward and inverse DFT.

For a power-of-two size n with corresponding root of unity for forward DFT and for inverse DFT it computes

without normalization factors.

The Reference and OpenMP implementations support only power-of-two input sizes, as they use the Radix-2 algorithm by J. W. Cooley and J. W. Tukey, "An Algorithm for the Machine Calculation of Complex Fourier Series," Mathematics of Computation, vol. 19, no. 90, pp. 297–301, 1965, doi: 10.2307/2003354. The CUDA and HIP implementations use cuSPARSE/hipSPARSE with full support for non-power-of-two input sizes and special optimizations for products of small prime powers.

## Member Function Documentation

## ◆ conj_transpose()

std::unique_ptr< LinOp > gko::matrix::Fft::conj_transpose | ( |  | ) | const
| overridevirtual

Returns a LinOp representing the conjugate transpose of the Transposable object.

Returns
  a pointer to the new conjugate transposed object

Implements gko::Transposable.

## ◆ create() [1/2]

std::unique_ptr< Fft > gko::matrix::Fft::create | ( | std::shared_ptr< const Executor > | exec | ) |
| static

Creates an empty Fourier matrix.

Parameters

  exec | Executor associated to the matrix

Returns
  A smart pointer to the newly created matrix.

## ◆ create() [2/2]

std::unique_ptr< Fft > gko::matrix::Fft::create | ( | std::shared_ptr< const Executor > | exec,
|  | size_type | size = 0,
|  | bool | inverse = false )
| static

Creates an Fourier matrix with the given dimensions.

Parameters

  size | size of the matrix
  inverse | true to compute an inverse DFT instead of a normal DFT

Returns
  A smart pointer to the newly created matrix.

## ◆ transpose()

std::unique_ptr< LinOp > gko::matrix::Fft::transpose | ( |  | ) | const
| overridevirtual

Returns a LinOp representing the transpose of the Transposable object.

Returns
  a pointer to the new transposed object

Implements gko::Transposable.

The documentation for this class was generated from the following file:

- ginkgo/core/matrix/fft.hpp