aclnnDivV3
功能描述
根据指定的舍入模式(mode)对两个张量执行除法运算:
-
mode=0 (RealDiv):直接浮点除法,不做舍入
outi=selfi/otheriout_i = self_i / other_i
-
mode=1 (TruncDiv):除法后向零取整
outi=trunc(selfi/otheri)out_i = \text{trunc}(self_i / other_i)
-
mode=2 (FloorDiv):除法后向下取整
outi=⌊selfi/otheri⌋out_i = \lfloor self_i / other_i \rfloor
接口原型
aclnnStatus aclnnDivV3GetWorkspaceSize(
const aclTensor* self,
const aclTensor* other,
int64_t mode,
aclTensor* out,
uint64_t* workspaceSize,
aclOpExecutor** executor);
aclnnStatus aclnnDivV3(
void* workspace,
uint64_t workspaceSize,
aclOpExecutor* executor,
aclrtStream stream);
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| self | 输入 | 被除数,device 侧 aclTensor |
| other | 输入 | 除数,device 侧 aclTensor |
| mode | 输入 | 舍入模式:0/1/2 |
| out | 输出 | 结果张量,device 侧 aclTensor |
| workspaceSize | 输出 | 所需 workspace 大小 |
| executor | 输出 | op 执行器 |
| workspace | 输入 | workspace 内存起始地址 |
| stream | 输入 | acl stream 流 |
支持的数据类型
| self | other | out |
|---|---|---|
| FLOAT32 | FLOAT32 | FLOAT32 |
| FLOAT16 | FLOAT16 | FLOAT16 |
| BFLOAT16 | BFLOAT16 | BFLOAT16 |
| INT32 | INT32 | INT32 |
| INT16 | INT16 | INT16 |
广播规则
- self 和 other 的 shape 需满足 NumPy 广播规则。
- out 的 shape 必须等于广播后的 shape。
- 广播在 aclnn 接口层通过
l0op::BroadcastTo完成,kernel 层仅执行逐元素计算。
约束说明
- self 和 other 的数据类型必须一致。
- out 的数据类型必须与 self 一致。
- 数据格式仅支持 ND。
- 维度数不超过 8 维。
- mode 值只能为 0、1 或 2。