Wednesday, October 27, 2010

OpenCL FFT & Ocean Wave pt. 2

稍微正確的結果,之前的錯誤並不是高頻波,而是虛數的部分,因為Apple 的OpenCL FFT沒有complex to real這種轉換,所以inverse FFT出來的結果其實是複數,忽略掉虛數部分是上圖結果。

CUFFT有提供complex to real FFT這種轉換,只要在frequency domain符合一些對稱的條件,可以保證output會是實數,input size可以從N減為(N/2) + 1,在Cuda的ocean wave demo中,他們用這個方法來進一步加速,可惜的是Apple的FFT沒有這個功能。


不過照Tessendorf paper上的公式,我看不出一定會符合對稱的條件(?),那這時候轉換出來虛數的部分代表甚麼呢?感覺上已經到達我數學能力的極限了,數學只要不用,實在是退化的非常快阿...還好工作上都用現成的library,幾乎所有東西都是黑盒子啦,難的東西都交給別人寫就好...

一些相關reference

No comments: