▶ 各种稀疏矩阵数据结构下 y(n,1) = A(n,m) * x(m,1) 的实现,GPU版本

● MAT 乘法

 __global__ void dotGPU(const MAT *a, const MAT *x, MAT *y)
{
int id = blockIdx.x * blockDim.x + threadIdx.x;
if (id < a->row)
{
format sum = ;
for (int i = ; i < a->col; i++)
sum += a->data[id * a->col + i] * x->data[i];
y->data[id] = sum;
}
if (id == )
{
y->row = a->row;
y->col = x->col;
COUNT_MAT(y);
}
return;
}

● CSR 乘法

 __global__ void dotGPU(const CSR *a, const MAT *x, MAT *y)
{
int id = blockIdx.x * blockDim.x + threadIdx.x;
if (id < a->row)
{
format sum = ;
for (int j = a->ptr[id]; j < a->ptr[id + ]; j++)
sum += a->data[j] * x->data[a->index[j]];
y->data[id] = sum;
}
if (id == )
{
y->row = a->row;
y->col = x->col;
COUNT_MAT(y);
}
return;
}

● ELL 乘法

 __global__ void dotGPU(const ELL *a, const MAT *x, MAT *y)
{
int id = blockIdx.x * blockDim.x + threadIdx.x;
if (id < a->col)
{
format sum = ;
for (int j = ; j < a->row; j++)
sum += a->data[id + j * a->col] * (a->index[id + j * a->col] < ? : x->data[a->index[id + j * a->col]]);
y->data[id] = sum;
}
if (id == )
{
y->row = a->col;
y->col = x->col;
COUNT_MAT(y);
}
return;
}

● COO 乘法

 __global__ void dotGPU(const ELL *a, const MAT *x, MAT *y)// GPU ELL乘法
{
int id = blockIdx.x * blockDim.x + threadIdx.x;
if (id < a->col)
{
format sum = ;
for (int j = ; j < a->row; j++)
sum += a->data[id + j * a->col] * (a->index[id + j * a->col] < ? : x->data[a->index[id + j * a->col]]);
y->data[id] = sum;
}
if (id == )
{
y->row = a->col;
y->col = x->col;
COUNT_MAT(y);
}
return;
}

● DIA 乘法,留坑

最新文章

  1. PageImpl是不是有问题?
  2. F - To the Max
  3. python开发_mysqldb安装
  4. XunSearch(讯搜)的使用教程步骤
  5. s1.charAt(x)==&#39;a&#39;
  6. 我的github
  7. MVC通俗演义系列开篇
  8. Android Fragment详解(三): 实现Fragment的界面
  9. 除trigger()方法外的jquery手动触发事件
  10. Linux入门练习
  11. AES解密后多了\0
  12. functiontools模块
  13. JavaFx之不通过全局静态变量进行窗体通信
  14. python3版本中的zip函数
  15. setattr
  16. python中关于if-else使用性能的一点感悟
  17. VS 清除编译产生的临时文件、文件夹
  18. Windows下本机简易监控系统搭建(Telegraf+Influxdb+Grafana)
  19. 520的信心赛——点点玩deeeep
  20. java的开发主要以http为基础

热门文章

  1. ssm项目整合shiro
  2. 学习笔记CB003:分块、标记、关系抽取、文法特征结构
  3. hibernate二级缓存demo2
  4. [PYTHON]_ELVE_Python源代码文件编译成可执行文件(支持macOS High Sierra和window 10)
  5. java基础(一):我对java的三个环境变量的简单理解和配置
  6. 使用User Primary Email作为GUID的问题
  7. 前端基础:web语义化
  8. TypeScript 学习资料
  9. 关于mysql 的 autoCommit 参数
  10. 2019.4.24 一题(CF 809E)——推式子+虚树