Followup: setting FFTW.set_num_threads(2) (my machine only has two cores) and using rfft closes the gap somewhat, but there's still a substantial difference.
julia> R = rand(5000,5000); julia> @time rfft(R); 1.736385 seconds (99 allocations: 190.816 MB, 0.95% gc time) julia> R = rand(512,512); julia> @time rfft(R); 0.018692 seconds (93 allocations: 2.012 MB) On Friday, June 17, 2016 at 11:56:44 AM UTC-7, Logan Williams wrote: > > Hi, > > I'm finding that a 2D FFT in Julia is an order of magnitude slower than > GNU Octave. Does anyone know why this is happening? > > Thanks, > Logan > > In Octave: > > >> R = rand(512,512); > >> tic; fft2(R); toc; > Elapsed time is 0.00377011 seconds. > > In Julia: > > julia> R = rand(512,512); > > julia> @time fft(R); > > 0.042149 seconds (76 allocations: 8.003 MB) > > > In Octave with non-power of 2 size: > > > >> R = rand(5000,5000); > > >> tic; fft2(R); toc; > > Elapsed time is 0.556037 seconds. > > > In Julia with non-power of 2 size: > > > julia> R = rand(5000,5000); > > julia> @time fft(R); > > 6.212666 seconds (76 allocations: 762.943 MB, 1.17% gc time) >
