Assuming sparse grids work for superball (#485), try using them for more general polydispersity calculations.
This will require a change in the kernel_iq interface. Instead of sending in a list of polydisperse dimensions with a set of values along each dimension, we may be able to precalculate the set of points and weights to use for the given set of polydisperse parameters and send that to the GPU as a list of points to evaluate. Since we may be varying both the distribution centre and its width during the fit, all distributions will need to be shift-scale invariant so that we can easily translate points on the fixed grid to parameter values. The kernel methods can already enforce physical limits on the parameters, such as radius > 0. The distribution functions will need to be replaced with definitions based on cdf and ppf of the standardized form, without shift and scale. Distributions like log normal may require special handling.
Assuming sparse grids work for superball (#485), try using them for more general polydispersity calculations.
This will require a change in the kernel_iq interface. Instead of sending in a list of polydisperse dimensions with a set of values along each dimension, we may be able to precalculate the set of points and weights to use for the given set of polydisperse parameters and send that to the GPU as a list of points to evaluate. Since we may be varying both the distribution centre and its width during the fit, all distributions will need to be shift-scale invariant so that we can easily translate points on the fixed grid to parameter values. The kernel methods can already enforce physical limits on the parameters, such as radius > 0. The distribution functions will need to be replaced with definitions based on cdf and ppf of the standardized form, without shift and scale. Distributions like log normal may require special handling.