作者:jamesbjackso
项目:cuda
// Destroys the plan.
func (plan *Handle) Destroy() {
err := Result(C.cufftDestroy(C.cufftHandle(*plan)))
*plan = 0 // make sure plan is not used anymore
if err != SUCCESS {
panic(err)
}
}
作者:jamesbjackso
项目:cuda
// Sets the FFTW compatibility mode
func (plan Handle) SetCompatibilityMode(mode CompatibilityMode) {
err := Result(C.cufftSetCompatibilityMode(
C.cufftHandle(plan),
C.cufftCompatibility(mode)))
if err != SUCCESS {
panic(err)
}
}
作者:jamesbjackso
项目:cuda
// Sets the cuda stream for this plan
func (plan Handle) SetStream(stream cu.Stream) {
err := Result(C.cufftSetStream(
C.cufftHandle(plan),
C.cudaStream_t(unsafe.Pointer(uintptr(stream)))))
if err != SUCCESS {
panic(err)
}
}
作者:jamesbjackso
项目:cuda
// Execute Double Complex-to-Real plan
func (plan Handle) ExecZ2D(idata, odata cu.DevicePtr) {
err := Result(C.cufftExecZ2D(
C.cufftHandle(plan),
(*C.cufftDoubleComplex)(unsafe.Pointer(uintptr(idata))),
(*C.cufftDoubleReal)(unsafe.Pointer(uintptr(odata)))))
if err != SUCCESS {
panic(err)
}
}
作者:LStoleri
项目:hotspi
// Execute Complex-to-Real plan
func (plan Handle) ExecC2R(idata, odata uintptr) {
err := Result(C.cufftExecC2R(
C.cufftHandle(plan),
(*C.cufftComplex)(unsafe.Pointer(idata)),
(*C.cufftReal)(unsafe.Pointer(odata))))
if err != SUCCESS {
panic(err)
}
}
作者:jamesbjackso
项目:cuda
// Execute Double Complex-to-Complex plan
func (plan Handle) ExecZ2Z(idata, odata cu.DevicePtr, direction int) {
err := Result(C.cufftExecZ2Z(
C.cufftHandle(plan),
(*C.cufftDoubleComplex)(unsafe.Pointer(uintptr(idata))),
(*C.cufftDoubleComplex)(unsafe.Pointer(uintptr(odata))),
C.int(direction)))
if err != SUCCESS {
panic(err)
}
}
作者:LStoleri
项目:hotspi
// Execute Complex-to-Complex plan
func (plan Handle) ExecC2C(idata, odata uintptr, direction int) {
err := Result(C.cufftExecC2C(
C.cufftHandle(plan),
(*C.cufftComplex)(unsafe.Pointer(idata)),
(*C.cufftComplex)(unsafe.Pointer(odata)),
C.int(direction)))
if err != SUCCESS {
panic(err)
}
}