专栏名称: zartbot
随便记录点有趣的东西
目录
相关文章推荐
今天看啥  ›  专栏  ›  zartbot

Tensor-010 Tensor Copy

zartbot  · 公众号  ·  · 2024-09-14 22:34

主要观点总结

本文介绍了Cute Tiled Copy的抽象结构和相应的内存拷贝流程,包括CopyOperation、Copy_Traits、Copy_Atom、TiledCopy和ThrCopy等概念,以及一个具体的示例。文章详细描述了各个结构和类的功能和作用,以及它们如何协同工作来完成内存拷贝任务。

关键观点总结

关键观点1: Cutlass的抽象结构和概念

介绍了Cutlass库中的抽象结构和概念,包括CopyOperation、Copy_Traits、Copy_Atom等。这些结构和概念是Cutlass库进行内存拷贝的基础。

关键观点2: TiledCopy的工作原理

详细描述了TiledCopy的工作流程,包括如何将原始矩阵拆分为多个块(Tile),以及如何通过定义Thread Layout和Vector Copy Layout来执行内存拷贝操作。

关键观点3: ThrCopy的作用

介绍了ThrCopy的作用,它是基于TiledCopy的线程级描述符对象,通过它的partition_S/D函数可以获得相应的拷贝操作数。

关键观点4: 示例分析

以一个具体的示例来分析Cutlass库中的内存拷贝过程,包括矩阵的分配和初始化、Tensor的创建、Block Shape的定义、Tile的拆分以及Kernel的启动等。


文章预览

本文介绍Cute Tiled Copy的抽象结构和相应的内存拷贝流程, 目录如下: 1.  Cute Copy范式 1.1  CopyOperation 1.2  Copy_Traits 1.3  Copy_Atom 1.4  TiledCopy 1.5  ThrCopy 2.  Cute Copy示例 1. Cute Copy范式 Cutlass Tiled Copy的抽象结构如下所示. 1.1 Copy_Op Copy_Op是原始的PTX指令, 我们在《Tensor-003 TensorCore架构》中介绍了 ldmatrix , cp.async 以及Hopper的TMA等多种内存拷贝指令.在 include/cute/arch 有相应的实现,例如 ldmatrix struct   SM75_U16x8_LDSM_T {    using  SRegisters =  uint128_t [ 1 ];    using  DRegisters =  uint32_t [ 4 ];    CUTE_HOST_DEVICE  static   void    copy ( uint128_t   const &  smem_src,         uint32_t &  dst0,  uint32_t &  dst1,  uint32_t &  dst2,  uint32_t &  dst3)    {      uint32_t  smem_int_ptr = cast_smem_ptr_to_uint( _src);      asm   volatile   ( "ldmatrix.sync.aligned.x4.trans.m8n8.shared.b16 {%0, %1, %2, %3}, [%4];\n"        ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览