gpu计算

gird是最大的结构,由参数griddim来表示由多少个block

block由参数blockdim来表示有多少个thread

一个线程执行完以后需要写入结果矩阵

我们假设AB矩阵分别为M*N和N*K,这样结果矩阵就是M*K

假规定blockDim是16*16*1

那么有

这样能覆盖到所有元素

明确一点就是,描述形状的是不包括0的描述位置的是包括0的

先不管边界条件,自然的想法是一个执行单元负责计算一个结果矩阵的元素,那么对于x,y位置的元素需要A矩阵的第x行和B矩阵的第y列,那么这里A和B都是数组,所以对于A,我们要算出前面有多少数据,

我们有的参数是结果矩阵的bloakidx和threadidx,那么行数就是,比如是第33行(这里包括编号0)

blockDim.y表示一个block有多少行线程,那么33/16就说明33行前面有两行块,那么blockIdx.y就是2

那么再加上threadIdx就可以得到前面有多少行,

ROW=blockIdx.y * blockDim.y + threadIdx.y;

也就是

前面的块数*一块里面的线程行数+该线程在自己块的行数

同理我们可以知道B的列数

那么最后到A里面找元素就是ROW*N开始,是第一个元素的位置,然后取完N行

对应B就是从第0行开始,往下数N行,都是COL这个位置,然后乘累加,放进结果矩阵对应的位置。

对于边界条件,就是下表可能会超出数组范围,我们加判断

相关推荐

  1. <span style='color:red;'>gpu</span><span style='color:red;'>计算</span>

    gpu计算

    2024-03-18 12:48:03      44 阅读
  2. Pytorch-06 使用GPU加速计算

    2024-03-18 12:48:03       31 阅读
  3. 在MATLAB中进行并行计算GPU加速?

    2024-03-18 12:48:03       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-18 12:48:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-18 12:48:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-18 12:48:03       87 阅读
  4. Python语言-面向对象

    2024-03-18 12:48:03       96 阅读

热门阅读

  1. 蓝桥杯--平均

    2024-03-18 12:48:03       47 阅读
  2. Elasticsearch(12) match_bool_prefix的使用

    2024-03-18 12:48:03       48 阅读
  3. RabbitMq——direct交换器和fanout交换器 扇形交换器

    2024-03-18 12:48:03       41 阅读
  4. uni-app多次触发事件,防止重复点击

    2024-03-18 12:48:03       41 阅读
  5. Sklearn K-均值算法

    2024-03-18 12:48:03       38 阅读
  6. Springboot中常用工具类

    2024-03-18 12:48:03       33 阅读
  7. OpenResty使用Lua大全(七)OpenResty使用全局缓存

    2024-03-18 12:48:03       48 阅读
  8. 软件测试行业的现状和前景?

    2024-03-18 12:48:03       46 阅读
  9. 比特币,区块链及相关概念简介(四)

    2024-03-18 12:48:03       52 阅读
  10. 开源项目_搭建对象存储服务MinIO

    2024-03-18 12:48:03       39 阅读