Class CudaFFTPlan2D
Creates a 2D FFT plan configuration according to specified signal sizes
and data type. This class is the same as CudaFFTPlan1D except that
it takes a second size parameter, ny, and does not support batching.
Inheritance
Implements
Inherited Members
Namespace: ManagedCuda.CudaFFT
Assembly: CudaFFT.dll
Syntax
public class CudaFFTPlan2D : IDisposable
Constructors
| Improve this Doc View SourceCudaFFTPlan2D(cufftHandle, Int32, Int32, cufftType)
Creates a new 2D FFT plan (new API)
Declaration
public CudaFFTPlan2D(cufftHandle handle, int nx, int ny, cufftType type)
Parameters
| Type | Name | Description |
|---|---|---|
| cufftHandle | handle | cufftHandle object |
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
CudaFFTPlan2D(cufftHandle, Int32, Int32, cufftType, CUstream)
Creates a new 2D FFT plan (new API)
Declaration
public CudaFFTPlan2D(cufftHandle handle, int nx, int ny, cufftType type, CUstream stream)
Parameters
| Type | Name | Description |
|---|---|---|
| cufftHandle | handle | cufftHandle object |
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| CUstream | stream | A valid CUDA stream created with cudaStreamCreate() (or 0 for the default stream) |
CudaFFTPlan2D(cufftHandle, Int32, Int32, cufftType, CUstream, ref SizeT)
Creates a new 2D FFT plan (new API)
Declaration
public CudaFFTPlan2D(cufftHandle handle, int nx, int ny, cufftType type, CUstream stream, ref SizeT size)
Parameters
| Type | Name | Description |
|---|---|---|
| cufftHandle | handle | cufftHandle object |
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| CUstream | stream | A valid CUDA stream created with cudaStreamCreate() (or 0 for the default stream) |
| SizeT | size |
CudaFFTPlan2D(cufftHandle, Int32, Int32, cufftType, CUstream, ref SizeT, Boolean)
Creates a new 2D FFT plan (new API)
Declaration
public CudaFFTPlan2D(cufftHandle handle, int nx, int ny, cufftType type, CUstream stream, ref SizeT size, bool autoAllocate)
Parameters
| Type | Name | Description |
|---|---|---|
| cufftHandle | handle | cufftHandle object |
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| CUstream | stream | A valid CUDA stream created with cudaStreamCreate() (or 0 for the default stream) |
| SizeT | size | |
| System.Boolean | autoAllocate | indicates that the caller intends to allocate and manage work areas for plans that have been generated. |
CudaFFTPlan2D(cufftHandle, Int32, Int32, cufftType, CUstream, Compatibility)
Creates a new 2D FFT plan (new API)
Declaration
public CudaFFTPlan2D(cufftHandle handle, int nx, int ny, cufftType type, CUstream stream, Compatibility mode)
Parameters
| Type | Name | Description |
|---|---|---|
| cufftHandle | handle | cufftHandle object |
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| CUstream | stream | A valid CUDA stream created with cudaStreamCreate() (or 0 for the default stream) |
| Compatibility | mode | The Compatibility option to be used |
CudaFFTPlan2D(cufftHandle, Int32, Int32, cufftType, CUstream, Compatibility, ref SizeT)
Creates a new 2D FFT plan (new API)
Declaration
public CudaFFTPlan2D(cufftHandle handle, int nx, int ny, cufftType type, CUstream stream, Compatibility mode, ref SizeT size)
Parameters
| Type | Name | Description |
|---|---|---|
| cufftHandle | handle | cufftHandle object |
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| CUstream | stream | A valid CUDA stream created with cudaStreamCreate() (or 0 for the default stream) |
| Compatibility | mode | The Compatibility option to be used |
| SizeT | size |
CudaFFTPlan2D(cufftHandle, Int32, Int32, cufftType, CUstream, Compatibility, ref SizeT, Boolean)
Creates a new 2D FFT plan (new API)
Declaration
public CudaFFTPlan2D(cufftHandle handle, int nx, int ny, cufftType type, CUstream stream, Compatibility mode, ref SizeT size, bool autoAllocate)
Parameters
| Type | Name | Description |
|---|---|---|
| cufftHandle | handle | cufftHandle object |
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| CUstream | stream | A valid CUDA stream created with cudaStreamCreate() (or 0 for the default stream) |
| Compatibility | mode | The Compatibility option to be used |
| SizeT | size | |
| System.Boolean | autoAllocate | indicates that the caller intends to allocate and manage work areas for plans that have been generated. |
CudaFFTPlan2D(cufftHandle, Int32, Int32, cufftType, CUstream, Compatibility, Boolean)
Creates a new 2D FFT plan (new API)
Declaration
public CudaFFTPlan2D(cufftHandle handle, int nx, int ny, cufftType type, CUstream stream, Compatibility mode, bool autoAllocate)
Parameters
| Type | Name | Description |
|---|---|---|
| cufftHandle | handle | cufftHandle object |
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| CUstream | stream | A valid CUDA stream created with cudaStreamCreate() (or 0 for the default stream) |
| Compatibility | mode | The Compatibility option to be used |
| System.Boolean | autoAllocate | indicates that the caller intends to allocate and manage work areas for plans that have been generated. |
CudaFFTPlan2D(cufftHandle, Int32, Int32, cufftType, CUstream, Boolean)
Creates a new 2D FFT plan (new API)
Declaration
public CudaFFTPlan2D(cufftHandle handle, int nx, int ny, cufftType type, CUstream stream, bool autoAllocate)
Parameters
| Type | Name | Description |
|---|---|---|
| cufftHandle | handle | cufftHandle object |
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| CUstream | stream | A valid CUDA stream created with cudaStreamCreate() (or 0 for the default stream) |
| System.Boolean | autoAllocate | indicates that the caller intends to allocate and manage work areas for plans that have been generated. |
CudaFFTPlan2D(cufftHandle, Int32, Int32, cufftType, ref SizeT)
Creates a new 2D FFT plan (new API)
Declaration
public CudaFFTPlan2D(cufftHandle handle, int nx, int ny, cufftType type, ref SizeT size)
Parameters
| Type | Name | Description |
|---|---|---|
| cufftHandle | handle | cufftHandle object |
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| SizeT | size |
CudaFFTPlan2D(cufftHandle, Int32, Int32, cufftType, ref SizeT, Boolean)
Creates a new 2D FFT plan (new API)
Declaration
public CudaFFTPlan2D(cufftHandle handle, int nx, int ny, cufftType type, ref SizeT size, bool autoAllocate)
Parameters
| Type | Name | Description |
|---|---|---|
| cufftHandle | handle | cufftHandle object |
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| SizeT | size | |
| System.Boolean | autoAllocate | indicates that the caller intends to allocate and manage work areas for plans that have been generated. |
CudaFFTPlan2D(cufftHandle, Int32, Int32, cufftType, Compatibility)
Creates a new 2D FFT plan (new API)
Declaration
public CudaFFTPlan2D(cufftHandle handle, int nx, int ny, cufftType type, Compatibility mode)
Parameters
| Type | Name | Description |
|---|---|---|
| cufftHandle | handle | cufftHandle object |
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| Compatibility | mode | The Compatibility option to be used |
CudaFFTPlan2D(cufftHandle, Int32, Int32, cufftType, Compatibility, ref SizeT)
Creates a new 2D FFT plan (new API)
Declaration
public CudaFFTPlan2D(cufftHandle handle, int nx, int ny, cufftType type, Compatibility mode, ref SizeT size)
Parameters
| Type | Name | Description |
|---|---|---|
| cufftHandle | handle | cufftHandle object |
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| Compatibility | mode | The Compatibility option to be used |
| SizeT | size |
CudaFFTPlan2D(cufftHandle, Int32, Int32, cufftType, Compatibility, ref SizeT, Boolean)
Creates a new 2D FFT plan (new API)
Declaration
public CudaFFTPlan2D(cufftHandle handle, int nx, int ny, cufftType type, Compatibility mode, ref SizeT size, bool autoAllocate)
Parameters
| Type | Name | Description |
|---|---|---|
| cufftHandle | handle | cufftHandle object |
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| Compatibility | mode | The Compatibility option to be used |
| SizeT | size | |
| System.Boolean | autoAllocate | indicates that the caller intends to allocate and manage work areas for plans that have been generated. |
CudaFFTPlan2D(cufftHandle, Int32, Int32, cufftType, Compatibility, Boolean)
Creates a new 2D FFT plan (new API)
Declaration
public CudaFFTPlan2D(cufftHandle handle, int nx, int ny, cufftType type, Compatibility mode, bool autoAllocate)
Parameters
| Type | Name | Description |
|---|---|---|
| cufftHandle | handle | cufftHandle object |
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| Compatibility | mode | The Compatibility option to be used |
| System.Boolean | autoAllocate | indicates that the caller intends to allocate and manage work areas for plans that have been generated. |
CudaFFTPlan2D(cufftHandle, Int32, Int32, cufftType, Boolean)
Creates a new 2D FFT plan (new API)
Declaration
public CudaFFTPlan2D(cufftHandle handle, int nx, int ny, cufftType type, bool autoAllocate)
Parameters
| Type | Name | Description |
|---|---|---|
| cufftHandle | handle | cufftHandle object |
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| System.Boolean | autoAllocate | indicates that the caller intends to allocate and manage work areas for plans that have been generated. |
CudaFFTPlan2D(Int32, Int32, cufftType)
Creates a new 2D FFT plan (old API)
Declaration
public CudaFFTPlan2D(int nx, int ny, cufftType type)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
CudaFFTPlan2D(Int32, Int32, cufftType, CUstream)
Creates a new 2D FFT plan (old API)
Declaration
public CudaFFTPlan2D(int nx, int ny, cufftType type, CUstream stream)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| CUstream | stream | A valid CUDA stream created with cudaStreamCreate() (or 0 for the default stream) |
CudaFFTPlan2D(Int32, Int32, cufftType, CUstream, Compatibility)
Creates a new 2D FFT plan (old API)
Declaration
public CudaFFTPlan2D(int nx, int ny, cufftType type, CUstream stream, Compatibility mode)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| CUstream | stream | A valid CUDA stream created with cudaStreamCreate() (or 0 for the default stream) |
| Compatibility | mode | The Compatibility option to be used |
CudaFFTPlan2D(Int32, Int32, cufftType, Compatibility)
Creates a new 2D FFT plan (old API)
Declaration
public CudaFFTPlan2D(int nx, int ny, cufftType type, Compatibility mode)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | nx | The transform size in the X dimension (number of rows) |
| System.Int32 | ny | The transform size in the Y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., C2R for complex to real) |
| Compatibility | mode | The Compatibility option to be used |
Properties
| Improve this Doc View SourceHandle
Handle
Declaration
public cufftHandle Handle { get; }
Property Value
| Type | Description |
|---|---|
| cufftHandle |
NX
The transform size in the X dimension (number of rows)
Declaration
public int NX { get; }
Property Value
| Type | Description |
|---|---|
| System.Int32 |
NY
The transform size in the Y dimension (number of columns)
Declaration
public int NY { get; }
Property Value
| Type | Description |
|---|---|
| System.Int32 |
Type
The transform data type (e.g., C2R for complex to real)
Declaration
public cufftType Type { get; }
Property Value
| Type | Description |
|---|---|
| cufftType |
Methods
| Improve this Doc View SourceDispose()
Dispose
Declaration
public void Dispose()
Dispose(Boolean)
For IDisposable
Declaration
protected virtual void Dispose(bool fDisposing)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Boolean | fDisposing |
EstimateSize(Int32, Int32, cufftType)
During plan execution, CUFFT requires a work area for temporary storage of intermediate results. This call returns an estimate for the size of the work area required, given the specified parameters, and assuming default plan settings. Note that changing some plan settings, such as compatibility mode, may alter the size required for the work area.
Declaration
public static SizeT EstimateSize(int nx, int ny, cufftType type)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | nx | The transform size in the x dimension (number of rows) |
| System.Int32 | ny | The transform size in the y dimension (number of columns) |
| cufftType | type | The transform data type (e.g., CUFFT_C2C for single precision complex to complex) |
Returns
| Type | Description |
|---|---|
| SizeT |
Exec(CUdeviceptr)
Executes a CUFTT transorm as defined by the cufftType. This method does an in‐place transform.
This method is only valid for transform types where transorm direction is implicitly given by the type (i.e. not C2C and not Z2Z)
Declaration
public void Exec(CUdeviceptr iodata)
Parameters
| Type | Name | Description |
|---|---|---|
| CUdeviceptr | iodata |
Exec(CUdeviceptr, CUdeviceptr)
Executes a CUFTT transorm as defined by the cufftType. If idata and odata are the same, this method does an in‐place transform.
This method is only valid for transform types where transorm direction is implicitly given by the type (i.e. not C2C and not Z2Z)
Declaration
public void Exec(CUdeviceptr idata, CUdeviceptr odata)
Parameters
| Type | Name | Description |
|---|---|---|
| CUdeviceptr | idata | |
| CUdeviceptr | odata |
Exec(CUdeviceptr, CUdeviceptr, TransformDirection)
Executes a CUFTT transorm as defined by the cufftType. If idata and odata are the same, this method does an in‐place transform.
Declaration
public void Exec(CUdeviceptr idata, CUdeviceptr odata, TransformDirection direction)
Parameters
| Type | Name | Description |
|---|---|---|
| CUdeviceptr | idata | |
| CUdeviceptr | odata | |
| TransformDirection | direction | Only unsed for transformations where direction is not implicitly given by type |
Exec(CUdeviceptr, TransformDirection)
Executes a CUFTT transorm as defined by the cufftType. This method does an in‐place transform.
Declaration
public void Exec(CUdeviceptr iodata, TransformDirection direction)
Parameters
| Type | Name | Description |
|---|---|---|
| CUdeviceptr | iodata | |
| TransformDirection | direction | Only unsed for transformations where direction is not implicitly given by type |
Finalize()
For dispose
Declaration
protected void Finalize()
GetActualSize()
Once plan generation has been done, either with the original API or the extensible API, this call returns the actual size of the work area required to support the plan. Callers who choose to manage work area allocation within their application must use this call after plan generation, and after any cufftSet*() calls subsequent to plan generation, if those calls might alter the required work space size.
Declaration
public SizeT GetActualSize()
Returns
| Type | Description |
|---|---|
| SizeT |
GetSize()
This call gives a more accurate estimate of the work area size required for a plan than cufftEstimate1d(), given the specified parameters, and taking into account any plan settings that may have been made.
Declaration
public SizeT GetSize()
Returns
| Type | Description |
|---|---|
| SizeT |
SetAutoAllocation(Boolean)
SetAutoAllocation() indicates that the caller intends to allocate and manage work areas for plans that have been generated. CUFFT default behavior is to allocate the work area at plan generation time. If cufftSetAutoAllocation() has been called with autoAllocate set to "false" prior to one of the cufftMakePlan*() calls, CUFFT does not allocate the work area. This is the preferred sequence for callers wishing to manage work area allocation.
Declaration
public void SetAutoAllocation(bool autoAllocate)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Boolean | autoAllocate |
SetCompatibilityMode(Compatibility)
configures the layout of CUFFT output in FFTW‐compatible modes. When FFTW compatibility is desired, it can be configured for padding only, for asymmetric complex inputs only, or to be fully compatible.
Declaration
public void SetCompatibilityMode(Compatibility mode)
Parameters
| Type | Name | Description |
|---|---|---|
| Compatibility | mode |
SetStream(CUstream)
Associates a CUDA stream with a CUFFT plan. All kernel launches made during plan execution are now done through the associated stream, enabling overlap with activity in other streams (for example, data copying). The association remains until the plan is destroyed or the stream is changed with another call to SetStream().
Declaration
public void SetStream(CUstream stream)
Parameters
| Type | Name | Description |
|---|---|---|
| CUstream | stream | A valid CUDA stream created with cudaStreamCreate() (or 0 for the default stream) |
SetWorkArea(CUdeviceptr)
SetWorkArea() overrides the work area pointer associated with a plan. If the work area was auto-allocated, CUFFT frees the auto-allocated space. The cufftExecute*() calls assume that the work area pointer is valid and that it points to a contiguous region in device memory that does not overlap with any other work area. If this is not the case, results are indeterminate.
Declaration
public void SetWorkArea(CUdeviceptr workArea)
Parameters
| Type | Name | Description |
|---|---|---|
| CUdeviceptr | workArea |