cutlass2.x源码解读之PredicatedTileAccessIteratorPredicates

概念解释:

        Predicate(谓词):本质上是一个bool判断,用于判断矩阵元素坐标是否在范围内,如果是则对应的谓词位置为1,否则置为0。最终,predicates_数组将包含所有元素的谓词信息指定位置是否超过范围,因此通过精细控制谓词的计算和设置,来优化矩阵运算中的数据访问,提高计算效率。

      更通俗的解释就是:“为每个线程在访问张量(如矩阵)时预计算一组“访问合法性标志”(predicates),防止越界访问,并通过位压缩减少存储开销

PredicatedTileAccessIteratorPredicates模板类定义

        模板参数包括Shape_, Element_, Layout_, AdvanceRank, ThreadMap_, 和AccessType_。该类包含一些类型定义、静态常量以及用于控制迭代和访问模式的成员变量。

类型定义:
        Shape: 使用模板参数Shape_定义的类型。
        Element: 使用模板参数Element_定义的类型。
        Layout: 使用模板参数Layout_定义的类型。
        Index: 使用Layout中的Index类型。
        LongIndex: 使用Layout中的LongIndex类型。
        TensorCoord: 使用Layout中的TensorCoord类型。
静态常量:
        kAdvanceRank: 模板参数AdvanceRank的值。
        kAccessesPerVector: 计算为ThreadMap::kElementsPerAccess /  AccessType::kElements, 表示一个线程一次大访问”需要拆成多少个“小向量访问。

               ThreadMap::kElementsPerAccess :每个线程一次能加载的元素数

                AccessType::kElements:每次实际访问的元素数(如 4 个 half)
        kPredicatesPerByte = 4: 每个字节的谓词数量,固定为4,因此2个bit表示一个predicate
        kPredicatesPerWord = 16: 每个字的谓词数量,计算为4 * kPredicatesPerByte。
&nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值