今天看啥  ›  专栏  ›  zartbot

Tensor-009 Cute Tensor

zartbot  · 公众号  · 算法 科技媒体  · 2024-09-09 19:09
    

主要观点总结

本文详细介绍了CuTe框架中的Tensor定义、创建、使用、切片、展平、合并、分组、分区和算法等。Tensor是一种基于Layout和Engine的数据结构,用于表示多维数组。文章首先定义了Tensor的所有权,包括Owning和Non-Owning两种类型,然后介绍了Tensor的创建方法,包括使用指针创建和注册内存创建。接着文章详细描述了Tensor的基本操作,如获取维度信息、元素访问、切片等。同时,文章还介绍了Tensor的算法,如填充、清除和axpby运算。最后,文章还介绍了Tensor的分区方法,包括Inner分区、Outer分区和Thread-Value分区,并给出了相应的示例。

关键观点总结

关键观点1: Tensor定义和所有权

Tensor是通过物理存储空间和Layout定义的一种数据结构,用于表示多维数组。它分为Owning和Non-Owning两种类型,分别对应不同的所有权和生命周期管理。

关键观点2: Tensor创建方法

Tensor的创建方法包括使用指针创建和注册内存创建。指针创建需要指定指针和Layout,注册内存创建需要先注册内存再创建Tensor。

关键观点3: Tensor基本操作

Tensor提供了获取维度信息、元素访问、切片等基本操作。同时,也支持通过Layout和Engine进行索引。

关键观点4: Tensor算法

Tensor提供了填充、清除和axpby等算法。填充用于将Tensor中的元素设置为指定值,清除用于将Tensor中的元素设置为默认值,axpby用于执行线性运算。

关键观点5: Tensor分区方法

Tensor支持通过不同的分区方法进行分区,包括Inner分区、Outer分区和Thread-Value分区。这些分区方法可以帮助将Tensor划分为不同的部分,以便进行并行处理。


文章预览

前一篇我们详细介绍了CuTe Layout及其相关的代数, 这一篇我们将开始介绍Tensor. 简单来看Layout只是定义了元素编排和底层存储之间的位置关系, 但是并没有关联到真正的存储. 给一个相对狭义的Tensor定义, 它是通过物理存储空间和Layout定义的一种数据结构, 对外暴露出一种多维数组的形式,对内基于Layout进行索引. 对于一个Tensor由Layout和Engine两个模版参数表示, Layout已经在前一篇详细介绍了, 它是一个逻辑结构将坐标映射到偏移量(Offset), 而Engine是一个基于Offset和解引用的迭代器. 本文目录如下:   1.  创建Tensor   1.1  张量所有权   1.1 .1  Non-Owning Tensor   1.1 .2  Owning Tensor   1.2  小结   2.  使用张量   2.1  基本操作   2.2  元素访问   2.3  张量切片(Slicing)   2.4  Flatten/Coalesce/Group_modes   3.  Tiling  &  Partitioning   3.1  Tensor除法   3.2  Partitioning   3.2 .1  Inner分 ………………………………

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