-
Notifications
You must be signed in to change notification settings - Fork 37
Description
Hi SG++ developers,
I am benchmarking adaptive SG interpolation with different types of basis functions for my physics application. I have modified the python tutorial for the Base module to use modified basis functions of type: linear, poly, wavelet, bspline, bspline-cc, fundamental-spline and extended-nak-bspline and with both SurplusRefinement and SurplusVolumeRefinement. For a small number of training points (<1000 or so) this works well, but I have problems for larger training sets (I want up to 1 000 000, or at least 500 000).
The bottleneck seems to be hierarchisation which it is also pointed out in the tutorial, is done in a pretty inefficient way. I have to re-hierarchise for each iteration of refinement. I can see how this might be unavoidable for some basis functions, but at least the ones with fundamental property can be much more efficient. Can anyone point me to an example or some alternative function (instead of createOperationHierarchisation(grid).doHierarchisation(alpha)? I have tried to increase the step size, but this only helps slightly.
Another issue I have is that I require createOperationMultipleHierarchisation (from optimization module) for the following basis functions: bspline, bspline-cc, wavelet, extended-nak as was pointed out in an older issue #18. This hierarchisation seems very slow compared to the other function found in the base module, is this necessary or am I doing something wrong?
Also I would like to use the Boundaryless B-spline basis described in his thesis by Michael Rehme but I cannot find it in SG++. Currently the extended-nak-bspline (with assumed similar performance) is maybe too slow for my application, but I would like to check how it compares with Boundaryless B-splines for small training sets anyway.
Thank you and all the best,
Anton