Copyright | [2013..2018] Robert Clifton-Everest Trevor L. McDonell |
---|---|

License | BSD3 |

Maintainer | Trevor L. McDonell <tmcdonell@cse.unsw.edu.au> |

Stability | experimental |

Portability | non-portable (GHC extensions) |

Safe Haskell | None |

Language | Haskell98 |

# Documentation

A handle used to store and access cuFFT plans.

A handle is created by the FFT planning functions (e.g. `plan1D`

) and used
during execution of the transforms (e.g. `execC2C`

).

The handle may be reused, but should be `destroy`

ed once it is no longer
required, in order to release associated GPU memory and other resources.

The cuFFT library supports complex- and real-valued transforms. This data type enumerates the kind of transform a plan will execute.

Key:

**R**: real (32-bit float)**D**: double (64-bit float)**C**: single-precision complex numbers (32-bit, interleaved)**Z**: double-precision complex numbers (64-bit, interleaved)

:: Int | Size of the transformation |

-> Type | Transformation data type |

-> Int | Number of one-dimensional transforms to configure |

-> IO Handle |

Creates a 1D FFT plan configured for a specified signal size and data type.

The third argument tells cuFFT how many 1D transforms, of size given by the
first argument, to configure. Consider using `planMany`

for multiple
transforms instead.

http://docs.nvidia.com/cuda/cufft/index.html#function-cufftplan1d

:: Int | The transform size in the |

-> Int | The transform size in the |

-> Type | Transformation data type |

-> IO Handle |

Creates a 2D FFT plan configuration for a specified signal size and data type.

http://docs.nvidia.com/cuda/cufft/index.html#function-cufftplan2d

:: Int | The transform size in the |

-> Int | The transform size in the |

-> Int | The transform size in the |

-> Type | Transformation data type |

-> IO Handle |

Creates a 3D FFT plan configuration for a specified signal size and data type.

http://docs.nvidia.com/cuda/cufft/index.html#function-cufftplan3d

:: [Int] | The size of the transform in each dimension, where |

-> Maybe ([Int], Int, Int) | Input data layout. If |

-> Maybe ([Int], Int, Int) | Output data layout. If |

-> Type | Transformation type |

-> Int | Batch size for this transform |

-> IO Handle |

Creates a batched plan configuration for many signals of a specified size and data type in either 1, 2 or 3 dimensions.

This function supports more complicated input and output data layouts. If not
specified (that is, `Nothing`

is passed for either of the second or third
parameters), contiguous data arrays are assumed.

Data layout configuration consists of three fields, respectively:

- storage dimensions of the input data in memory
- the distance between two successive input elements in the innermost (least significant) dimension
- the distance between the first element of two consecutive signals in a batch of the input data

http://docs.nvidia.com/cuda/cufft/index.html#function-cufftplanmany