这节我们学习一个矩阵相乘的例子,矩阵是一个二维的4X4数组。计算时,16个数位同时计算,每个数位都进行四次乘法和四次加法的运算。

其实我们不难发现矩阵乘法其实就是行列式的点乘计算。在OpenCL里内置有dot运算符,通过这个运算符我们可以减少每一数位的运算次数,把四次乘法和四次加法合并成一次点乘计算。当然,我们必须把之前的int类型先转变成float数据类型,另外把之前B的数组先转置。下面我们来看代码。

matrix_mult.cl源码

c语言codeblocks如何复制(用Codeblocks进行OpenCL编程6)(1)

main.cpp源码:

c语言codeblocks如何复制(用Codeblocks进行OpenCL编程6)(2)

c语言codeblocks如何复制(用Codeblocks进行OpenCL编程6)(3)

c语言codeblocks如何复制(用Codeblocks进行OpenCL编程6)(4)

c语言codeblocks如何复制(用Codeblocks进行OpenCL编程6)(5)

c语言codeblocks如何复制(用Codeblocks进行OpenCL编程6)(6)

运算结果:

c语言codeblocks如何复制(用Codeblocks进行OpenCL编程6)(7)

,