HIP: Heterogenous-computing Interface for Portability: CUFFT API supported by HIP

HIP: Heterogenous-computing Interface for Portability

CUFFT API supported by HIP

# <strong>1. CUFFT Data types</strong>

| type | CUDA |**CUDA version***| HIP |**HIP value** (if differs) | |----------—:|------------------------------------------------------------—|:-------------—:|---------------------------------------------------------—|------------------------—| | enum |***`cufftResult_t`*** | |***`hipfftResult_t`*** | | enum |***`cufftResult`*** | |***`hipfftResult`*** | | 0x0 |*`CUFFT_SUCCESS`* | |*`HIPFFT_SUCCESS`* | 0 | | 0x1 |*`CUFFT_INVALID_PLAN`* | |*`HIPFFT_INVALID_PLAN`* | 1 | | 0x2 |*`CUFFT_ALLOC_FAILED`* | |*`HIPFFT_ALLOC_FAILED`* | 2 | | 0x3 |*`CUFFT_INVALID_TYPE`* | |*`HIPFFT_INVALID_TYPE`* | 3 | | 0x4 |*`CUFFT_INVALID_VALUE`* | |*`HIPFFT_INVALID_VALUE`* | 4 | | 0x5 |*`CUFFT_INTERNAL_ERROR`* | |*`HIPFFT_INTERNAL_ERROR`* | 5 | | 0x6 |*`CUFFT_EXEC_FAILED`* | |*`HIPFFT_EXEC_FAILED`* | 6 | | 0x7 |*`CUFFT_SETUP_FAILED`* | |*`HIPFFT_SETUP_FAILED`* | 7 | | 0x8 |*`CUFFT_INVALID_SIZE`* | |*`HIPFFT_INVALID_SIZE`* | 8 | | 0x9 |*`CUFFT_UNALIGNED_DATA`* | |*`HIPFFT_UNALIGNED_DATA`* | 9 | | 0xA |*`CUFFT_INCOMPLETE_PARAMETER_LIST`* | |*`HIPFFT_INCOMPLETE_PARAMETER_LIST`* | 10 | | 0xB |*`CUFFT_INVALID_DEVICE`* | |*`HIPFFT_INVALID_DEVICE`* | 11 | | 0xC |*`CUFFT_PARSE_ERROR`* | |*`HIPFFT_PARSE_ERROR`* | 12 | | 0xD |*`CUFFT_NO_WORKSPACE`* | |*`HIPFFT_NO_WORKSPACE`* | 13 | | 0xE |*`CUFFT_NOT_IMPLEMENTED`* | |*`HIPFFT_NOT_IMPLEMENTED`* | 14 | | 0xF |*`CUFFT_LICENSE_ERROR`* | | | | 0x10 |*`CUFFT_NOT_SUPPORTED`* | 8.0 |*`HIPFFT_NOT_SUPPORTED`* | 16 | | float |***`cufftReal`*** | |***`hipfftReal`*** | | double |***`cufftDoubleReal`*** | |***`hipfftDoubleReal`*** | | float2 |***`cufftComplex`*** | |***`hipfftComplex`*** | | double2 |***`cufftDoubleComplex`*** | |***`hipfftDoubleComplex`*** | | define |`CUFFT_FORWARD` | |`HIPFFT_FORWARD` | | define |`CUFFT_INVERSE` | |`HIPFFT_BACKWARD` | | enum |***`cufftType_t`*** | |***`hipfftType_t`*** | | enum |***`cufftType`*** | |***`hipfftType`*** | | 0x2a |*`CUFFT_R2C`* | |*`HIPFFT_R2C`* | | 0x2c |*`CUFFT_C2R`* | |*`HIPFFT_C2R`* | | 0x29 |*`CUFFT_C2C`* | |*`HIPFFT_C2C`* | | 0x6a |*`CUFFT_D2Z`* | |*`HIPFFT_D2Z`* | | 0x6c |*`CUFFT_Z2D`* | |*`HIPFFT_Z2D`* | | 0x69 |*`CUFFT_Z2Z`* | |*`HIPFFT_Z2Z`* | | enum |***`cufftCompatibility_t`*** | | | | enum |***`cufftCompatibility`*** | | | | 0x01 |*`CUFFT_COMPATIBILITY_FFTW_PADDING`* | | | | define |`CUFFT_COMPATIBILITY_DEFAULT` | | | | int |***`cufftHandle`*** | |***`hipfftHandle`*** |

# <strong>2. CUFFT API functions</strong>

| CUDA | HIP |**CUDA version***| |--------------------------------------------------------—|----------------------------------------------—|:-------------—:| |`cufftPlan1d` |`hipfftPlan1d` | |`cufftPlan2d` |`hipfftPlan2d` | |`cufftPlan3d` |`hipfftPlan3d` | |`cufftPlanMany` |`hipfftPlanMany` | |`cufftMakePlan1d` |`hipfftMakePlan1d` | |`cufftMakePlan2d` |`hipfftMakePlan2d` | |`cufftMakePlan3d` |`hipfftMakePlan3d` | |`cufftMakePlanMany` |`hipfftMakePlanMany` | |`cufftMakePlanMany64` |`hipfftMakePlanMany64` | 7.5 | |`cufftGetSizeMany64` |`hipfftGetSizeMany64` | 7.5 | |`cufftEstimate1d` |`hipfftEstimate1d` | |`cufftEstimate2d` |`hipfftEstimate2d` | |`cufftEstimate3d` |`hipfftEstimate3d` | |`cufftEstimateMany` |`hipfftEstimateMany` | |`cufftCreate` |`hipfftCreate` | |`cufftGetSize1d` |`hipfftGetSize1d` | |`cufftGetSize2d` |`hipfftGetSize2d` | |`cufftGetSize3d` |`hipfftGetSize3d` | |`cufftGetSizeMany` |`hipfftGetSizeMany` | |`cufftGetSize` |`hipfftGetSize` | |`cufftSetWorkArea` |`hipfftSetWorkArea` | |`cufftSetAutoAllocation` |`hipfftSetAutoAllocation` | |`cufftExecC2C` |`hipfftExecC2C` | |`cufftExecR2C` |`hipfftExecR2C` | |`cufftExecC2R` |`hipfftExecC2R` | |`cufftExecZ2Z` |`hipfftExecZ2Z` | |`cufftExecD2Z` |`hipfftExecD2Z` | |`cufftExecZ2D` |`hipfftExecZ2D` | |`cufftSetStream` |`hipfftSetStream` | |`cufftDestroy` |`hipfftDestroy` | |`cufftGetVersion` |`hipfftGetVersion` | |`cufftGetProperty` | | 8.0 |