CANN asc-devkit Tensor视图引擎

ViewEngine

【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 【免费下载链接】asc-devkit 项目地址: https://gitcode.com/cann/asc-devkit

产品支持情况

|产品|是否支持| |--|:-:| |Ascend 950PR/Ascend 950DT|√|

功能说明

ViewEngine是Tensor API中的视图引擎,负责持有一个指针对象Iterator,通过Begin()返回这段视图的起始位置。在LocalTensor中,ViewEngine和Layout一起组成一个Tensor的视图。

LocalTensor<TensorAttribute<ViewEngine<Iterator>, LayoutType>>

函数原型

ViewEngine定义如下:

template <typename Iterator>
struct ViewEngine
{
    using iterator    = Iterator;
    using reference   = typename IterRef<iterator>::type;
    using elementType = typename IterEle<iterator>::type;
    using valueType   = typename IterVal<iterator>::type;

    __aicore__ inline constexpr iterator const& Begin() const;
    __aicore__ inline constexpr iterator& Begin();
    __aicore__ inline constexpr ViewEngine(iterator storage = {});
};

成员函数说明

ViewEngine()

  • 功能说明

    根据给定的指针/迭代器对象构造ViewEngine对象。

  • 函数原型

    __aicore__ inline constexpr ViewEngine(iterator storage = {});
    
    
  • 参数说明

  • storage:视图起始位置对应的指针/迭代器对象。

  • 返回值说明

    构造函数无返回值。

Begin()

  • 功能说明

    获取构造ViewEngine对象时的起始位置指针/迭代器。

  • 函数原型

    __aicore__ inline constexpr iterator const& Begin() const;
    
    __aicore__ inline constexpr iterator& Begin();
    
    
  • 返回值说明

  • 返回构造时保存的storage,即当前视图的起始指针/迭代器。

约束说明

传入的iterator对象必须是有效的随机访问迭代器,以确保能够正确访问和操作数据。

调用示例

  using namespace AscendC::Te;

  constexpr int32_t size = 256;
  __ubuf__ float data[size];
  auto ptr = MakeMemPtr(data);

  auto layout = MakeLayout(MakeShape(2, 2), MakeStride(2, 1));
  auto tensor = MakeTensor(ptr, layout);

  auto engine = tensor.Engine();
  auto begin = engine.Begin();

  float a = begin[0];
  float b = tensor[MakeCoord(1, 1)];

【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 【免费下载链接】asc-devkit 项目地址: https://gitcode.com/cann/asc-devkit

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值