代码是将存储在压缩列存储中的稀疏矩阵与列向量相乘。首先是串行代码。其次是打开 cl 内核。让我使用更有意义的名称而不是 inputimage 和 output。
我必须并行化我的代码。串行输出与内核的输出不同。有人可以告诉我我遗漏了什么吗?
序列号是
int result[4]={0,0,0,0};
for(int col=0;col<4;col++)
{
for(int j=rowptr[col];j<rowptr[col+1];j++)
{
result[index[j]]+=val[j]*colvector[col];
}
}
它的输出与并行代码不同。每个内核的工作单元设置为 4 下面给出了并行代码。有人请告诉我我缺少什么。
int col=get_global_id(0);
for(int j=rowptr[col];j<rowptr[col+1];j++)
{
result[index[j]]+=val[j]*colvector[col];
}