opencl异构平台可以加快计算速度,主要核心算法是放到了kernel中进行运算。
最近研究一个算法,该算法过程中使用了大量的矩阵运算,例如先初始化单位矩阵、零矩阵,过程中有逆矩阵、转置,矩阵相乘,相除等等。目前查到的资料,如blas都是只是针对一个步骤,而我的算法包含了很多个矩阵运算。目前一直没有找到合适解决方案。
请各位大神能给一个指导思路,或相关文章。这个问题困扰了我很久。感谢大家。
基于opencl的计算,有几个步骤开销比较大:
1.数据从CPU导入到GPU;
2.结果从GPU导出CPU;
3.kernel程序的编译;
4.kernel程序导入到GPU;
关键是减少这些开销大的步骤,使得运算时间集中在真正的计算上。例如每次计算的中间结果,可以保留在GPU中,作为下次计算的输入,这样可以明显减少开销。