Replies: 1 comment
-
I think the issue is that the spreading does not give enough accuracy with 1.25. The generated coefficients go up to 1e-9 with upsamp of 1.25 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
I have been running several performance benchmarks with FINUFFT lately, and I think that in some situations performance can be improved by simply tweaking the heuristics for the choice of the upsampling factor.
For example, running a 3D type 1/2 test with N=216**3, M=1e8 and epsilon varying over the full range (cf Finufft paper, Figure 6.4), there is a huge jump in performance around epsilon=1e-9, because Finufft changes the upsampling factor from 2 to 1.25 at that point.
The switch is made at this location in the sources:
finufft/src/finufft_core.cpp
Lines 637 to 638 in ff9c283
There are a few aspects of this statement that seem strange to me:
N
go down from 1D to 2D, and up again from 2D to 3D? This seems counterintuitive.N
numbers used here? Changing the upsampling factor influences the cost of spreading/interpolation as well as the cost of the FFT, so I would expect the criterion to depend somehow on the ratio of total number of points in the grid and the number of nonuniform points.As a concrete example, I would expect best performance if the upsampling factor switches from 2 to 1.25 immediately when epsilon goes above 1e-9, if there are very few nonuniform points compared to the grid size. On the other hand, if the number of nonuniform points is very large compared to the grid size, keeping an upsampling factor of 2 even at epsilons above 1e-9 will lead to faster transforms.
Beta Was this translation helpful? Give feedback.
All reactions