我有一个OpenCL应用程序,它利用了英特尔至强融核的功能 .
内核使用数据库进行一些统计计算 . 因此,我在想是否可以添加第二个使用相同数据库的内核并在Phi上同时运行它们 .
例如,内核1使用n / 2个线程,内核2使用n / 2个线程等 .
有什么建议 ?
利用Intel Xeon Phi的功能 .
利用内存不足?算术单位?缓存? SIMD?
您是否将其描述为针脚问题?
对内核1使用n / 2个线程,对内核2使用n / 2个线程等
如果内核使用了太多内存并且没有命中缓存,则可以减少内核中的循环限制,这样每个线程可以在更少的内存上工作,并且可能更频繁地命中缓存,然后应用第二个内核处理剩余的循环 . 如果每个线程有m个元素,您可以:
n个线程(对于i = 0到m / 2)n个线程(对于i = m / 2到m)
类似于补丁中的矩阵乘法以使用更多缓存
手动将内核向量化为16个宽的组件,如int16和float16 .
1 回答
利用内存不足?算术单位?缓存? SIMD?
您是否将其描述为针脚问题?
如果内核使用了太多内存并且没有命中缓存,则可以减少内核中的循环限制,这样每个线程可以在更少的内存上工作,并且可能更频繁地命中缓存,然后应用第二个内核处理剩余的循环 . 如果每个线程有m个元素,您可以:
n个线程(对于i = 0到m / 2)n个线程(对于i = m / 2到m)
类似于补丁中的矩阵乘法以使用更多缓存
手动将内核向量化为16个宽的组件,如int16和float16 .