在CUDA的CUFFT的使用手册上, 对于变换方向cufftType_t是这么定义的
typedef enum cufftType_t {
CUFFT_R2C = 0x2a, // Real to complex (interleaved)
CUFFT_C2R = 0x2c, // Complex (interleaved) to real
CUFFT_C2C = 0x29, // Complex to complex (interleaved)
CUFFT_D2Z = 0x6a, // Double to double-complex (interleaved)
CUFFT_Z2D = 0x6c, // Double-complex (interleaved) to double
CUFFT_Z2Z = 0x69 // Double-complex to double-complex (interleaved)
} cufftType;
其中对复数标注了 (interleaved) , 表示比较费解, 难道不是常规的复数? 查阅了其他的资料, 未见对此说明.
查词典的含义是: 交错的
难道是要交换实部虚部?
有没有了解的给点指点?
在cufft.h文件中是如下定义类型的:
// CUFFT defines and supports the following data types
// cufftHandle is a handle type used to store and access CUFFT plans.
typedef unsigned int cufftHandle;
// cufftReal is a single-precision, floating-point real data type.
// cufftDoubleReal is a double-precision, real data type.
typedef float cufftReal;
typedef double cufftDoubleReal;
// cufftComplex is a single-precision, floating-point complex data type that
// consists of interleaved real and imaginary components.
// cufftDoubleComplex is the double-precision equivalent.
typedef cuComplex cufftComplex;
typedef cuDoubleComplex cufftDoubleComplex;
您可以根据上述说法,自己再验证一下。
祝您编码愉快~