{"action":"created","issue":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/12398","labels_url":"https://api.github.com/repos/JuliaLang/julia/issues/12398/labels{/name}","comments_url":"https://api.github.com/repos/JuliaLang/julia/issues/12398/comments","events_url":"https://api.github.com/repos/JuliaLang/julia/issues/12398/events","html_url":"https://github.com/JuliaLang/julia/issues/12398","id":98294783,"number":12398,"title":"Support FFT of split complex representation","user":{"login":"yuyichao","id":712232,"avatar_url":"https://avatars.githubusercontent.com/u/712232?v=3","gravatar_id":"","url":"https://api.github.com/users/yuyichao","html_url":"https://github.com/yuyichao","followers_url":"https://api.github.com/users/yuyichao/followers","following_url":"https://api.github.com/users/yuyichao/following{/other_user}","gists_url":"https://api.github.com/users/yuyichao/gists{/gist_id}","starred_url":"https://api.github.com/users/yuyichao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yuyichao/subscriptions","organizations_url":"https://api.github.com/users/yuyichao/orgs","repos_url":"https://api.github.com/users/yuyichao/repos","events_url":"https://api.github.com/users/yuyichao/events{/privacy}","received_events_url":"https://api.github.com/users/yuyichao/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2015-07-31T00:57:04Z","updated_at":"2015-07-31T11:39:34Z","closed_at":null,"body":"As shown by @simonster (https://github.com/simonster/StructsOfArrays.jl), Structure of Array is much easier to vectorize. Using `StructOfArrays(Complex64)` and `@simd` I can see a speed up of `>2x`. However, it seems that this is not very well supported by our fft API.\r\n\r\nAs @simonster suggested, I tried to implement FFT on `StructOfArrays` using `fftw_plan_gure64_split_dft`. The non-plan version works greet. However, I get SegFault when trying to use the plan interface. It seems that fftw assumes that the relative address between the real and complex part is fixed and therefore is not accessing the right address when I pass in a different array.\r\n\r\nIs there a fftw interface that can be used to implement this?\r\n\r\n@stevengj \r\n"},"comment":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/comments/126662707","html_url":"https://github.com/JuliaLang/julia/issues/12398#issuecomment-126662707","issue_url":"https://api.github.com/repos/JuliaLang/julia/issues/12398","id":126662707,"user":{"login":"yuyichao","id":712232,"avatar_url":"https://avatars.githubusercontent.com/u/712232?v=3","gravatar_id":"","url":"https://api.github.com/users/yuyichao","html_url":"https://github.com/yuyichao","followers_url":"https://api.github.com/users/yuyichao/followers","following_url":"https://api.github.com/users/yuyichao/following{/other_user}","gists_url":"https://api.github.com/users/yuyichao/gists{/gist_id}","starred_url":"https://api.github.com/users/yuyichao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yuyichao/subscriptions","organizations_url":"https://api.github.com/users/yuyichao/orgs","repos_url":"https://api.github.com/users/yuyichao/repos","events_url":"https://api.github.com/users/yuyichao/events{/privacy}","received_events_url":"https://api.github.com/users/yuyichao/received_events","type":"User","site_admin":false},"created_at":"2015-07-31T11:39:34Z","updated_at":"2015-07-31T11:39:34Z","body":"Well, IIUC, four addresses are required for the plan function but then since the execute function assume a fixed offset between the real and imaginary part, it should only need two pointers. Maybe the execute function takes four pointers in order to be consistent with the plan function?\r\n\r\nThis is probably not a julia issue but it would be nice to mention this limitation in the fftw doc.\r\n\r\nAnyway, while it is really nice to support independent split dft, when I tested it on my code, it does not perform as well as what it is now since the FFT seems slower this way and the left over SIMD enabled by this is not significant enough in my case.\r\n"}}