我正尝试在python中执行拟合值迭代(FVI) (包括使用分段线性插值近似一个5维函数)。
scipy.interpolate.griddata在这方面做得很好。然而,我需要调用几千次插值例程(因为FVI是一个基于MC的算法)。
因此,基本上,函数已知的点集是静态的(并且很大-比如说32k),但是我需要近似的点(这是原始集合的小扰动)非常大(32k X 5000 )。
有没有移植到CUDA的scipy.interpolate.griddata的实现?或者,有没有办法以某种方式加速计算?
谢谢。
发布于 2012-12-28 16:26:02
对于分段线性插值,文档称scipy.interpolate.griddata
使用scipy.interpolate.LinearNDInterpolator
的方法,依次使用qhull对输入点进行Delaunay测试,然后执行标准重心插值,其中对于每个点,您必须确定每个点位于哪个超四面体内部,然后使用其barycentric coordinates作为超四面体节点值的插值权重。
测试可能很难并行化,但您可以使用scipy.spatial.Delaunay
访问CPU版本。另外两个步骤很容易并行化,尽管我不知道有什么免费的实现。
如果你的已知功能点在一个规则的网格上,描述here的方法特别容易在CUDA中实现,我已经使用过它的实际实现,尽管没有公开可用的。
所以我担心你将不得不自己做大部分的工作…
https://stackoverflow.com/questions/14015114
复制相似问题