cuFFT Interfaces
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=c_int), | public, | parameter | :: | CUFFT_COMM_MPI | = | 0 |
enumerator | :: | CUFFT_R2C | = | 42 | |
enumerator | :: | CUFFT_C2R | = | 44 | |
enumerator | :: | CUFFT_C2C | = | 41 | |
enumerator | :: | CUFFT_D2Z | = | 106 | |
enumerator | :: | CUFFT_Z2D | = | 108 | |
enumerator | :: | CUFFT_Z2Z | = | 105 |
enumerator | :: | CUFFT_SUCCESS | = | 0 | |
enumerator | :: | CUFFT_INVALID_PLAN | = | 1 | |
enumerator | :: | CUFFT_ALLOC_FAILED | = | 2 | |
enumerator | :: | CUFFT_INVALID_TYPE | = | 3 | |
enumerator | :: | CUFFT_INVALID_VALUE | = | 4 | |
enumerator | :: | CUFFT_INTERNAL_ERROR | = | 5 | |
enumerator | :: | CUFFT_EXEC_FAILED | = | 6 | |
enumerator | :: | CUFFT_SETUP_FAILED | = | 7 | |
enumerator | :: | CUFFT_INVALID_SIZE | = | 8 | |
enumerator | :: | CUFFT_UNALIGNED_DATA | = | 9 | |
enumerator | :: | CUFFT_INCOMPLETE_PARAMETER_LIST | = | 10 | |
enumerator | :: | CUFFT_INVALID_DEVICE | = | 11 | |
enumerator | :: | CUFFT_PARSE_ERROR | = | 12 | |
enumerator | :: | CUFFT_NO_WORKSPACE | = | 13 | |
enumerator | :: | CUFFT_NOT_IMPLEMENTED | = | 14 | |
enumerator | :: | CUFFT_LICENSE_ERROR | = | 15 | |
enumerator | :: | CUFFT_NOT_SUPPORTED | = | 16 |
Creates a FFT plan configuration of dimension rank, with sizes specified in the array n.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(c_ptr) | :: | plan |
Pointer to an uninitialized cufftHandle object. |
|||
integer(kind=c_int), | value | :: | rank |
Dimensionality of the transform (1, 2, or 3). |
||
integer(kind=c_int) | :: | n(*) |
Array of size rank, describing the size of each dimension, n[0] being the size of the outermost and n[rank-1] innermost (contiguous) dimension of a transform. |
|||
integer(kind=c_int) | :: | inembed(*) |
Pointer of size rank that indicates the storage dimensions of the input data in memory. If set to NULL, all other advanced data layout parameters are ignored. |
|||
integer(kind=c_int), | value | :: | istride |
Indicates the distance between two successive input elements in the least significant (i.e., innermost) dimension. |
||
integer(kind=c_int), | value | :: | idist |
Indicates the distance between the first element of two consecutive signals in a batch of the input data. |
||
integer(kind=c_int) | :: | onembed(*) |
Pointer of size rank that indicates the storage dimensions of the output data in memory. If set to NULL, all other advanced data layout parameters are ignored. |
|||
integer(kind=c_int), | value | :: | ostride |
Indicates the distance between two successive output elements in the output array in the least significant (i.e., innermost) dimension. |
||
integer(kind=c_int), | value | :: | odist |
Indicates the distance between the first element of two consecutive signals in a batch of the output data. |
||
integer(kind=c_int), | value | :: | ffttype |
The transform data type (e.g., CUFFT_R2C for single precision real to complex). |
||
integer(kind=c_int), | value | :: | batch |
Batch size for this transform. |
The enumerated type cufftResult defines API call result codes.
Executes any cuFFT transform regardless of precision and type. In case of complex-to-real and real-to-complex transforms, the direction parameter is ignored.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(c_ptr), | value | :: | plan |
cufftHandle returned by cufftCreate. |
||
type(c_ptr), | value | :: | input |
Pointer to the input data (in GPU memory) to transform. |
||
type(c_ptr), | value | :: | output |
Pointer to the output data (in GPU memory). |
||
integer(kind=c_int), | value | :: | direction |
The transform direction: CUFFT_FORWARD or CUFFT_INVERSE. Ignored for complex-to-real and real-to-complex transforms. |
The enumerated type cufftResult defines API call result codes.
Frees all GPU resources associated with a cuFFT plan and destroys the internal plan data structure.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(c_ptr), | value | :: | plan |
Object of the plan to be destroyed. |
The enumerated type cufftResult defines API call result codes.
Associates a CUDA stream with a cuFFT plan.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(c_ptr), | value | :: | plan |
Object to associate with the stream. |
||
type(dtfft_stream_t), | value | :: | stream |
A valid CUDA stream. |
The enumerated type cufftResult defines API call result codes.
Initializes a reshape handle for future use. This function is not collective.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(cufftReshapeHandle) | :: | reshapeHandle |
The reshape handle. |
The enumerated type cufftResult defines API call result codes.
Attaches a communication handle to a reshape. This function is not collective.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(cufftReshapeHandle), | value | :: | reshapeHandle |
The reshape handle. |
||
integer(kind=c_int), | value | :: | commType |
An enum describing the communication type of the handle. |
||
type(c_ptr) | :: | comm |
If commType is CUFFT_COMM_MPI, this should be a pointer to an MPI communicator. The pointer should remain valid until destruction of the handle. Otherwise, this should be NULL. |
The enumerated type cufftResult defines API call result codes.
Returns the amount (in bytes) of workspace required to execute the handle.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(cufftReshapeHandle), | value | :: | reshapeHandle |
The reshape handle. |
||
integer(kind=c_size_t) | :: | workSize |
The size, in bytes, of the workspace required during reshape execution. |
The enumerated type cufftResult defines API call result codes.
Creates a reshape intended to re-distribute a global array of 3D data.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(cufftReshapeHandle), | value | :: | reshapeHandle |
The reshape handle. |
||
integer(kind=c_long_long), | value | :: | elementSize |
The size of the individual elements, in bytes. Allowed values are 4, 8, and 16. |
||
integer(kind=c_int), | value | :: | rank |
The length of the lower_input, upper_input, lower_output, upper_output, strides_input, and strides_output arrays. rank should be 3. |
||
integer(kind=c_long_long) | :: | lower_input(*) |
An array of length rank, representing the lower-corner of the portion of the global nx * ny * nz array owned by the current process in the input descriptor. |
|||
integer(kind=c_long_long) | :: | upper_input(*) |
An array of length rank, representing the upper-corner of the portion of the global nx * ny * nz array owned by the current process in the input descriptor. |
|||
integer(kind=c_long_long) | :: | lower_output(*) |
An array of length rank, representing the lower-corner of the portion of the global nx * ny * nz array owned by the current process in the output descriptor. |
|||
integer(kind=c_long_long) | :: | upper_output(*) |
An array of length rank, representing the upper-corner of the portion of the global nx * ny * nz array owned by the current process in the output descriptor. |
|||
integer(kind=c_long_long) | :: | strides_input(*) |
An array of length rank, representing the local data layout of the input descriptor in memory. All entries must be decreasing and positive. |
|||
integer(kind=c_long_long) | :: | strides_output(*) |
An array of length rank, representing the local data layout of the output descriptor in memory. All entries must be decreasing and positive. |
The enumerated type cufftResult defines API call result codes.
Executes the reshape, redistributing data_in into data_out using the workspace in workspace.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(cufftReshapeHandle), | value | :: | reshapeHandle |
The reshape handle. |
||
type(c_ptr), | value | :: | dataOut |
A symmetric-heap pointer to the output data. This memory should be NVSHMEM allocated and identical on all processes. |
||
type(c_ptr), | value | :: | dataIn |
A symmetric-heap pointer to the input data. This memory should be NVSHMEM allocated and identical on all processes. |
||
type(c_ptr), | value | :: | workSpace |
A symmetric-heap pointer to the workspace data. This memory should be NVSHMEM allocated and identical on all processes. |
||
type(dtfft_stream_t), | value | :: | stream |
The CUDA stream in which to run the reshape operation. |
The enumerated type cufftResult defines API call result codes.
Destroys a reshape and all its associated data.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(cufftReshapeHandle), | value | :: | reshapeHandle |
The reshape handle. |
The enumerated type cufftResult defines API call result codes.
An opaque handle to a reshape operation.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(c_ptr), | public | :: | cptr |
Returns a string representation of the cuFFT error code.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=c_int32_t), | intent(in) | :: | error_code |
cuFFT error code |
String representation of the cuFFT error code