▶ 各种稀疏矩阵数据结构下 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 乘法,留坑

稀疏矩阵 part 4的更多相关文章

  1. [LeetCode] Sparse Matrix Multiplication 稀疏矩阵相乘

    Given two sparse matrices A and B, return the result of AB. You may assume that A's column number is ...

  2. 转载:稀疏矩阵存储格式总结+存储效率对比:COO,CSR,DIA,ELL,HYB

    http://www.cnblogs.com/xbinworld/p/4273506.html 稀疏矩阵是指矩阵中的元素大部分是0的矩阵,事实上,实际问题中大规模矩阵基本上都是稀疏矩阵,很多稀疏度在9 ...

  3. poj 3735 Training little cats 矩阵快速幂+稀疏矩阵乘法优化

    题目链接 题意:有n个猫,开始的时候每个猫都没有坚果,进行k次操作,g x表示给第x个猫一个坚果,e x表示第x个猫吃掉所有坚果,s x y表示第x个猫和第y个猫交换所有坚果,将k次操作重复进行m轮, ...

  4. 稀疏矩阵存储格式总结+存储效率对比:COO,CSR,DIA,ELL,HYB

    稀疏矩阵是指矩阵中的元素大部分是0的矩阵,事实上,实际问题中大规模矩阵基本上都是稀疏矩阵,很多稀疏度在90%甚至99%以上.因此我们需要有高效的稀疏矩阵存储格式.本文总结几种典型的格式:COO,CSR ...

  5. C语言 稀疏矩阵 压缩 实现

    稀疏矩阵压缩存储的C语言实现 (GCC编译). /** * @brief C语言 稀疏矩阵 压缩 实现 * @author wid * @date 2013-11-04 * * @note 若代码存在 ...

  6. 三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述)

    三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述) 用经典矩阵转置算法和普通的三元组矩阵转置在时间复杂度上都是不乐观的.快速转置算法在增加适当存储空间后实现快速转置具体原理见代码注释部 ...

  7. 稀疏矩阵乘法加法等的java实现

    原创声明:本文系作者原创,转载请写明出处. 一.前言       前几天由于科研需要,一直在搞矩阵的稀疏表示的乘法,不过最近虽然把程序写出来了,还是无法处理大规模的矩阵(虽然已经是稀疏了).原因可能是 ...

  8. Matlab稀疏矩阵

    一.矩阵存储方式 MATLAB的矩阵有两种存储方式,完全存储方式和稀疏存储方式 1.完全存储方式 将矩阵的全部元素按列存储,矩阵中的全部零元素也存储到矩阵中. 2.稀疏存储方式 仅存储矩阵所有的非零元 ...

  9. matlab——sparse函数和full函数(稀疏矩阵和非稀疏矩阵转换)

    函数功能:生成稀疏矩阵 使用方法 :S = sparse(A) 将矩阵A转化为稀疏矩阵形式,即矩阵A中任何0元素被去除,非零元素及其下标组成矩阵S.如果A本身是稀疏的,sparse(S)返回S. S ...

  10. 稀疏矩阵coo_matrix的乘法

    稀疏矩阵的乘法在做基于n-gram的分类的时候还是相当有用的,但是由于网上资料太少,所以折腾了几天才算折腾出来. 首先scipy包里常见的稀疏矩阵有三种形式, coo_matrix, csr_matr ...

随机推荐

  1. Linux之prink原理

    我的分析是基于Linux4.15.1 1.看看kernel是如何调用到console初始化函数的: 分两条线: a.start_kernel  -->  console_init   --> ...

  2. EBS WEBADI无法创建文档

    有些小伙伴在使用WEBADI时,下载模板之后会发现模板创建文档一直没有成功(没有报错,只是单纯的没有创建出文档),可以参考: http://blog.csdn.net/cyco008/article/ ...

  3. 【linux日常】 ACL权限管理

    ACL ((Access Control Lists) setfacl命令 这里引用一个非常详细的命令介绍. 要点: getfacl -R        递归获取acl权限,可以存储为文件以备还原 g ...

  4. Oracle创建用户角色

    正在维护一个CS结构的应用,每次创建应用的用户时都需要创建对应的数据库schema,并且需要赋予其相应的对象权限和角色.操作很不方便,所以专门创建了一个角色,过程如下: 1.创建角色 SQL> ...

  5. QCAD 修改默认的线宽

    QCAD 修改默认的线宽 默认的宽度实在是太宽了,把一些细节给掩盖了. 可以按以下方法找到修改默认宽度. 在 Layer -> Edit Layer 中. 最开始找了好久好久. 最开始在这里找了 ...

  6. 如何下载github子目录文件

    比如下载pai子目录下dockerfile文件,可以在浏览器键入 https://raw.githubusercontent.com/Microsoft/pai/master/src/dev-box/ ...

  7. Dynamics 365—脚本

    Xrm.Page.getAttribute() 转控件:controls.get(0) 取赋值:getValue(),setValue() 是否改动:getIsDirty() 表单载入时的值:getI ...

  8. HQL详解

    HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此 Hib ...

  9. php7 使用dom动态生成xml文档

    <?php $dom = new DomDocument('1.0','gb2312'); //创建DOM对象 $store = $dom->createElement('store'); ...

  10. OpenCV中feature2D——BFMatcher和FlannBasedMatcher

    作者:holybin 原文:https://blog.csdn.net/holybin/article/details/40926315 Brute Force匹配和FLANN匹配是opencv二维特 ...