Your processor can handle 4 simultaneous threads with HyperThreading. What are your results if you try setting the number of threads to 4? Do you know how many threads Octave uses for FFTW on your machine?
-Scott On Friday, June 17, 2016 at 3:01:45 PM UTC-4, Logan Williams wrote: > > 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) >> >
