Skip to content

ViewEngine

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品AI Core:不支持
  • Atlas 推理系列产品Vector Core:不支持
  • Atlas 训练系列产品:不支持

功能说明

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

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

函数原型

ViewEngine定义如下:

C++
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对象。

  • 函数原型

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

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

  • 返回值说明

    构造函数无返回值。

Begin()

  • 功能说明

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

  • 函数原型

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

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

约束说明

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

调用示例

C++
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 仓 master 分支自动编译生成,属于持续开发版本,可能存在缺陷,仅供预览与参考。如需稳定及商用资料,请查阅官方 昇腾社区