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 |