在我的问题中,定义了N个点在该区域内,这些点是随机分布的。对于每个点,我需要找到距离小于给定双精度浮点数DIST的所有相邻点。在Thrust中是否有一种有效的方法来实现这一目标?在串行计算中,我会使用邻居表,希望达到近似O(n)的时间复杂度,而不是O(n ^ 2)的朴素算法。
我已经找到了一个适用于我问题的二维桶排序的Thrust示例。但这还不足够,因为对于每个桶,我需要找到相邻桶中的所有点,然后计算它们的距离并查看是否有任何一个小于DIST。找到邻居和计算距离应该相对容易,但将这些合格的点添加到结果数组中似乎真的很难在Thrust中实现。重新阐述这个特定的问题的方式是这样的——我有两个二维数组A1和A2,列数代表2D桶的索引,每列都有不同数量的元素,这些元素是我的点的索引。 A1的第i列中的每个元素都将与A2的第i列中的每个元素形成潜在对,并且所有符合条件的对都应记录到结果数组中。 我可以使用CUDA内核和分配大量潜在未使用的内存作为解决方法,但那将是我最不想做的事情。 提前致谢。
我已经找到了一个适用于我问题的二维桶排序的Thrust示例。但这还不足够,因为对于每个桶,我需要找到相邻桶中的所有点,然后计算它们的距离并查看是否有任何一个小于DIST。找到邻居和计算距离应该相对容易,但将这些合格的点添加到结果数组中似乎真的很难在Thrust中实现。重新阐述这个特定的问题的方式是这样的——我有两个二维数组A1和A2,列数代表2D桶的索引,每列都有不同数量的元素,这些元素是我的点的索引。 A1的第i列中的每个元素都将与A2的第i列中的每个元素形成潜在对,并且所有符合条件的对都应记录到结果数组中。 我可以使用CUDA内核和分配大量潜在未使用的内存作为解决方法,但那将是我最不想做的事情。 提前致谢。