我已经开始学习openCL编程。作为开始,我正在考虑为以下三次多项式编写优化代码:openCL中数学函数的优化
g(x)= b1(x).f(x)+ b2(x)。(f(x))^ 2 + B3(X)(F(X)))^ 3
上述方程可以降低到以下内容:
G(X)= F(x)的[B1(X)+ F( x)的[B2(X)+ F(X).b3(X)〕〕
这减少乘法的数量在很大程度上。
假设我的f,b1,b2和b3是大小为500x500的矩阵。以下是该我认为执行本算法中的选择:
- 与500×500的螺纹实现一个内核,该矩阵的一个 元件上每个操作。
- 实现一个包含500个线程的内核,每个线程在500个元素上运行,即每个线程在一行上运行。
此外,阵列B1,B2,B3是恒定的阵列。我读到恒定数组可以移动到设备上,并保存在设备内存本地。如果有其他优化可能,请分享。
预先感谢
sravan
在我的情况下,条件行[i * w + 500] === row [(i + 1)* w]保持不错。虽然我需要编码和时间的代码。感谢这个建议。 目前我正在尝试在12核心的intel xeon上优化此代码。分析我收集的大小为256x828的数据的性能。我将globalRange设置为256,localRange设置为4,将工作组的数量设置为64.性能已经提高了很多。尽管其他场景我还没有尝试。 我读到,浮动的矢量化可以提高性能方面的很多。你能指出一些关于这方面的好链接吗? 谢谢 – Sravan 2012-04-04 13:26:21