asc.language.core

GlobalTensor

class asc.language.core.GlobalTensor(handle: Value)

GlobalTensor用来存放Global Memory(外部存储)的全局数据。 GlobalTensor public成员函数如下。类型T支持基础数据类型以及TensorTrait类型,但需要遵循使用此GlobalTensor的指令的数据类型支持情况。

GlobalTensor.get_phy_addr

获取全局数据的地址。

GlobalTensor.get_shape_info

获取GlobalTensor的shape信息。注意:Shape信息没有默认值,只有通过SetShapeInfo设置过Shape信息后,才可以调用该接口获取正确的ShapeInfo。

GlobalTensor.get_size

获取GlobalTensor的元素个数。

GlobalTensor.get_value

获取GlobalTensor的相应偏移位置的值。

GlobalTensor.set_global_buffer

传入全局数据地址,初始化GlobalTensor。

GlobalTensor.set_l2_cache_hint

设置GlobalTensor是否使能L2 Cache,默认使能L2 Cache。

GlobalTensor.set_shape_info

设置GlobalTensor的shape信息。

GlobalTensor.set_value

设置GlobalTensor相应偏移位置的值。

LocalMemAllocator

class asc.language.core.LocalMemAllocator(hard: Hardware = Hardware.UB)

LocalMemAllocator是在使用Ascend C静态Tensor编程方式时用于内存管理的类,用户无需构建TPipe/TQue, 而是直接创建LocalTensor对象并开发算子,从而减少运行时的开销,实现更优的性能。

LocalMemAllocator仅支持在Ascend C静态Tensor编程方式中使用,不可以与TPipe等接口混用。

LocalMemAllocator.alloc

根据用户指定的逻辑位置、数据类型、数据长度返回对应的 LocalTensor 对象。

LocalMemAllocator.get_cur_addr

返回当前物理位置空闲的起始地址。

LocalTensor

class asc.language.core.LocalTensor
class asc.language.core.LocalTensor(dtype: DataType)
class asc.language.core.LocalTensor(dtype: DataType, addr: int)
class asc.language.core.LocalTensor(dtype: DataType, pos: TPosition | None = TPosition.VECIN, addr: int = 0, tile_size: int = 0)
class asc.language.core.LocalTensor(handle: Value, dtype: DataType, shape: TensorShape)

LocalTensor用于存放AI Core中Local Memory(内部存储)的数据,支持逻辑位置TPosition为VECIN、VECOUT、VECCALC、A1、A2、B1、B2、CO1、CO2。

LocalTensor.get_length

获取LocalTensor数据长度。

LocalTensor.get_phy_addr

返回LocalTensor的地址或指定偏移量后的地址。

LocalTensor.get_position

获取LocalTensor所在的TPosition逻辑位置,支持TPosition为VECIN、VECOUT、VECCALC、A1、A2、B1、B2、CO1、CO2。

LocalTensor.get_shape_info

获取LocalTensor的Shape信息。注意:Shape信息没有默认值,只有通过SetShapeInfo设置过Shape信息后,才可以调用该接口获取正确的Shape信息。

LocalTensor.get_size

获取当前LocalTensor Size大小。

LocalTensor.get_user_tag

获取指定Tensor块的Tag信息,用户可以根据Tag信息对Tensor进行不同操作。

LocalTensor.get_value

获取LocalTensor指定索引的数值。 该接口仅在LocalTensor的TPosition为VECIN/VECCALC/VECOUT时支持。

LocalTensor.reinterpret_cast

将当前Tensor重解释为用户指定的新类型,转换后的Tensor与原Tensor地址及内容完全相同,Tensor的大小(字节数)保持不变。

LocalTensor.set_addr_with_offset

设置带有偏移的Tensor地址。用于快速获取定义一个Tensor,同时指定新Tensor相对于旧Tensor首地址的偏移。偏移的长度为旧Tensor的元素个数。

LocalTensor.set_buffer_len

设置Buffer长度。当用户调用operator[]函数创建新LocalTensor时,建议调用该接口设置新LocalTensor长度,便于编译器对内存及同步进行自动优化。

LocalTensor.set_shape_info

设置LocalTensor的Shape信息。

LocalTensor.set_size

设置当前LocalTensor Size大小。单位为元素。当用户重用local tensor变量且使用长度发生变化的时候,需要使用此接口重新设置Size。

LocalTensor.set_user_tag

为Tensor添加用户自定义信息,用户可以根据需要设置对应的Tag。后续可通过GetUserTag获取指定Tensor的Tag信息,并根据Tag信息对Tensor进行相应操作。

LocalTensor.set_value

设置LocalTensor中的某个值。 该接口仅在LocalTensor的TPosition为VECIN/VECCALC/VECOUT时支持。

ShapeInfo

class asc.language.core.ShapeInfo
class asc.language.core.ShapeInfo(shape: Array, original_shape: Array | None = None, data_format: DataFormat = DataFormat.ND)
class asc.language.core.ShapeInfo(handle: Value)

ShapeInfo用来存放LocalTensor或GlobalTensor的shape信息。

get_shape_size

获取Shape中所有dim的累乘结果