2013-08-07 52 views
0

我想從滿足特定條件的數組中挑選三角形。 我會如何在CUDA中做類似的事情?輸入是三角形數組。 CUDA然後計算每個三角形的值。 輸出應該是由值小於閾值的那些三角形組成的數組,例如2。使用cuda挑選數組的元素

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]; 
+1

什麼是您的用例中的「三角形」?它是什麼結構或矢量類型。細節很重要,我不是你已經足夠徹底地描述你的問題,以使這是一個可回答的問題。 – talonmies

回答

3

由於@talonmies說,你還沒有真正提供足夠的信息,在你的問題的一個完整的答案。但是,您所描述的內容聽起來很適合Thrustcopy_if算法。檢出this example

+0

感謝您將我指向copy_if方法。這導致我進一步的atomicAdd()函數,我可以用它來獲取新的數組的索引,我可以存儲有效的三角形。 – Markus

相關問題