【发布时间】:2020-07-17 04:26:10
【问题描述】:
我是OpenCL的新手,学习了一些OpenCL中矩阵运算的基本教程,但我几乎不明白如何将C++中的一些循环运算实现到OpenCL中。
对于二维数组,matrix A x matrix A 的直接乘法将实现为:
__kernel void sum(
__global const float *a, __global float *g) {
const int size = 4;
int i = get_global_id(1);
int j = get_global_id(0);
float z = a_g[i];
g [i+size*j] = a[i+size*j] *a[i+size*j] ;
}
但是如果我只想将某些行中的元素相乘而不是整个矩阵呢?
for (int j=1; j < 4; j++){
for (int i=0; i < 4; i++){
P[0][j] += Z[i][0]*Z[i][j];
}
}
说 P 是一维数组,其中 P 的每个元素是每行第一个元素与矩阵 Z 行中的所有元素相乘的总和。如何处理每行中的第一个元素,如 @ 所示987654324@ 并在 OpenCL 中与Z[i][j] 相乘?
谢谢
【问题讨论】:
标签: c++ opencl matrix-multiplication