A small improvement, but still much slower than Octave. julia> R = rand(512,512)
julia> @time rfft(R); 0.012027 seconds (93 allocations: 2.012 MB) julia> R = rand(5000,5000); julia> @time rfft(R); 1.461964 seconds (99 allocations: 190.816 MB, 1.16% gc time) Unfortunately, I don't know exactly how many threads Octave uses by default. Logan On Friday, June 17, 2016 at 8:04:49 PM UTC-7, Scott Jones wrote: > > 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) >>> >>
