【问题标题】:Pick elements of an array using cuda使用 cuda 选择数组的元素
【发布时间】:2013-08-07 16:54:42
【问题描述】:

我想从满足特定条件的数组中挑选三角形。 我将如何在 CUDA 中做类似的事情?

输入是一个三角形数组。 CUDA 然后为每个三角形计算一个值。 输出应该是一个由值小于阈值(例如 2)的三角形组成的数组。

triangle array:     [tri1][tri2][tri3][tri4]
value array:        [1.00][0.50][3.50][0.50]
-> pick triangles with value <= 2
output:             [tri1][tri2][tri4]

我不确定在这种情况下如何优化利用 cudas 并行性。

目前我将值数组读回mathematica并使用 Cases[] 来选择太慢的三角形。

result = CUDAMemoryGet[cOutput];
validTriangleIndices = Cases[Range[Length[result]], x_ /; result[[x]] < threshold];

【问题讨论】:

  • 您的用例中的“三角形”是什么?它是什么的结构,还是向量类型。细节很重要,我认为您对问题的描述不够彻底,不足以使这个问题成为一个可以回答的问题。

标签: cuda


【解决方案1】:

正如@talonmies 所说,您没有在问题中提供足够的信息来获得完整的答案。但是,您所描述的内容听起来很适合Thrustcopy_if 算法。查看this example

【讨论】:

  • 感谢您向我指出 copy_if 方法。这使我进一步了解 atomicAdd() 函数,我可以使用它来获取新数组的索引,我可以在其中存储有效三角形。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-30
  • 1970-01-01
  • 2018-05-01
  • 2016-07-02
  • 1970-01-01
  • 2013-02-02
相关资源
最近更新 更多