pypto_pro.language.and_#
产品支持情况#
Ascend 950PR/Ascend 950DT:支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
功能说明#
两个操作数对应位置逐元素按位与。支持Tile-Tile和Tile-Scalar两种模式,其中Scalar为标量。
Tile-Tile模式:对lhs和rhs对应位置的元素执行按位与,将结果写入out。
Tile-Scalar模式:对lhs中的每个元素和rhs标量执行按位与,将结果写入out。
函数原型#
pypto_pro.language.and_(
out: Tile,
lhs: Tile,
rhs: Union[Tile, Scalar],
) -> None
参数说明#
参数 |
输入/输出 |
说明 |
|---|---|---|
out |
输出 |
目的操作数,Tile类型,存储空间为UB,采用row-major布局,存放逐元素按位与的结果。支持DT_INT8、DT_UINT8、DT_INT16、DT_UINT16、DT_INT32和DT_UINT32。Tile-Tile模式下可与lhs为同一Tile,实现原地计算。 |
lhs |
输入 |
源操作数(左操作数),Tile类型,存储空间为UB,采用row-major布局。数据类型和valid_shape须与out一致。 |
rhs |
输入 |
源操作数(右操作数),支持Tile或Scalar类型,两种模式均支持DT_INT8、DT_UINT8、DT_INT16、DT_UINT16、DT_INT32和DT_UINT32。传入Tile时执行Tile-Tile计算,Tile的存储空间为UB,采用row-major布局,数据类型和valid_shape须与out、lhs一致;传入Scalar时执行Tile-Scalar计算,取值须在out数据类型的可表示范围内,整数常量按Scalar处理。 |
约束说明#
无。
返回值说明#
无。
调用示例#
Tile-Scalar模式#
import pypto_pro.language as pl
@pl.jit(auto_mutex=True)
def and_scalar_kernel(a: pl.Tensor[[64, 64], pl.DT_INT32],
out: pl.Tensor[[64, 64], pl.DT_INT32]):
tt = pl.TileType(shape=[64, 64], dtype=pl.DT_INT32, target_memory=pl.MemorySpace.Vec)
tile_a = pl.make_tile_group(type=tt, addrs=0x0000, mutex_ids=[0])
tile_out = pl.make_tile_group(type=tt, addrs=0x4000, mutex_ids=[1])
with pl.section_vector():
cur_a = tile_a.current()
cur_out = tile_out.current()
pl.load(cur_a, a, [0, 0])
pl.and_(cur_out, cur_a, 7)
pl.store(out, cur_out, [0, 0])
Tile-Tile模式#
# 两个Tile对应位置按位与。
pl.and_(tile_out, tile_a, tile_b)