如何在CUDA下改进此功能?

时间:2010-06-10 19:05:05

标签: c optimization cuda

我可以在CUDA下改进以下功能吗?

该功能的作用是什么,

鉴于minmaxELM1ELM,检查是否在任何行中找到任意三个数组ans[6],来自{{ 1}}到min,数组maxD1D2D3D4D5,如果找到返回1.

我尝试使用D6loops - ing,OR - ing,将AND替换为旗帜等等。但这似乎是最快的方法。

goto

1 个答案:

答案 0 :(得分:1)

通过将if语句转换为布尔表达式来删除if语句。

flag += (DN[ELM1] == ans[0])

确保您的数组位于寄存器或共享内存中,而不是全局

另外,在这样简单的算法上你会得到太复杂的逻辑。将D数组的布局更改为D [N] [6],因为它将简化许多事情

顺便说一下,你可能想要稍微裁剪你的帖子,太多了,无法阅读

3 x3示例

     A
  |0 0 0|           |x x 0
D |0 0 0| -> ... -> |x x 0 -> reduce down -> |x x o| -> reduce across -> 2x
  |0 0 0|           |x x x

如果匹配A在数组D中,基本上你将矩阵单元格设置为true。 在每次迭代中,如果整列为true,则将列减少为true。 然后你算上真实的数字。