我可以在CUDA
下改进以下功能吗?
该功能的作用是什么,
鉴于min
和max
,ELM1
和ELM
,检查是否在任何行中找到任意三个数组ans[6]
,来自{{ 1}}到min
,数组max
,D1
,D2
,D3
,D4
,D5
,如果找到返回1.
我尝试使用D6
,loops
- ing,OR
- ing,将AND
替换为旗帜等等。但这似乎是最快的方法。
goto
答案 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。 然后你算上真实的数字。