目前已完成的API: add, reciprocal, positive, negative, multiply, divide, truedivide, subtract, floordivide, power, float_power, fmod, mod, modf, remainder, divmod
1. add
- 参数: x1:NPUArray,第一个输入数组 x2:NPUArray,第二个输入数组 dtype:py::dtype,可选,输出数组的数据类型
- 返回类型: NPUArray
- 功能: 对输入数组 x1 和 x2 执行逐元素加法运算(x1 + x2),支持广播,底层调用 aclnnAdd 算子实现。
2. reciprocal
- 参数: x:NPUArray,输入数组 dtype:py::dtype,可选,输出数组的数据类型
- 返回类型: NPUArray
- 功能: 计算每个元素的倒数(1/x),底层调用 aclnnReciprocal 算子。
3. positive
- 参数: x:NPUArray,输入数组 dtype:py::dtype,可选,输出数组的数据类型
- 返回类型: NPUArray
- 功能: 一元正操作符。若 dtype 与输入一致则返回副本,否则在 NPU 上执行类型转换(aclnnCast)。
4. negative
- 参数: x:NPUArray,输入数组 dtype:py::dtype,可选,输出数组的数据类型
- 返回类型: NPUArray
- 功能: 一元负操作符,计算逐元素取负(-x),底层调用 aclnnNeg。
5. multiply
- 参数: x1:NPUArray,第一个输入数组 x2:NPUArray,第二个输入数组 dtype:py::dtype,可选,输出数组的数据类型
- 返回类型: NPUArray
- 功能: 对输入数组执行逐元素乘法运算(x1 * x2),支持广播,底层调用 aclnnMul 算子。
6. divide
- 参数: x1:NPUArray,被除数数组 x2:NPUArray,除数数组 dtype:py::dtype,可选,输出数组的数据类型
- 返回类型: NPUArray
- 功能: 执行逐元素除法(x1 / x2),支持广播,底层调用 aclnnDiv 算子。
7. truedivide
- 参数: x1:NPUArray,被除数数组 x2:NPUArray,除数数组 dtype:py::dtype,可选
- 返回类型: NPUArray
- 功能: 行为等价于 divide,执行逐元素实数除法。
8. subtract
- 参数: x1:NPUArray,第一个输入数组 x2:NPUArray,第二个输入数组 dtype:py::dtype,可选
- 返回类型: NPUArray
- 功能: 执行逐元素减法(x1 - x2),支持广播,底层调用 aclnnSub 算子。
9. floordivide
- 参数: x1:NPUArray,被除数数组 x2:NPUArray,除数数组 dtype:py::dtype,可选
- 返回类型: NPUArray
- 功能: 计算逐元素向下取整的除法结果 floor(x1 / x2),底层调用 aclnnFloorDivide 算子。
10. power
- 参数: x1:NPUArray 或标量,底数 x2:NPUArray 或标量,指数 dtype:py::dtype,可选
- 返回类型: NPUArray
- 功能: 计算 x1 ** x2,支持广播与类型自动转换。底层根据输入类型选择:aclnnPowTensorTensor、aclnnPowScalarTensor 或 aclnnPowTensorScalar。
11. float_power
- 参数: x1:NPUArray,底数 x2:NPUArray,指数 dtype:py::dtype,可选(必须为浮点类型)
- 返回类型: NPUArray
- 功能: 计算浮点幂 x1 ** x2,结果始终为浮点数,底层算子为 aclnnPowTensorTensor。
12. fmod
- 参数: x1:NPUArray,被除数 x2:NPUArray,除数 dtype:py::dtype,可选
- 返回类型: NPUArray
- 功能: 计算逐元素浮点取模:fmod(x1, x2) = x1 - trunc(x1 / x2) * x2,结果符号与被除数一致,底层调用 aclnnFmodTensor。
13. mod
- 参数: x1:NPUArray,被除数 x2:NPUArray,除数 dtype:py::dtype,可选
- 返回类型: NPUArray
- 功能: 计算逐元素余数:remainder(x1, x2) = x1 - round(x1 / x2) * x2,与 fmod 不同,结果符号可随除数变化,底层调用 aclnnRemainderTensorTensor。
14. modf
- 参数: x:NPUArray,输入数组(必须为浮点类型)
- 返回类型: (fractional: NPUArray, integral: NPUArray)
- 功能: 将输入拆分为小数部分与整数部分:frac = x - floor(x),int = floor(x),底层调用 aclnnFloor 与 aclnnSub。
15. remainder
- 参数: x1:NPUArray,被除数 x2:NPUArray,除数 dtype:py::dtype,可选
- 返回类型: NPUArray
- 功能: 与 mod 等价,返回 x1 - round(x1 / x2) * x2,内部调用 Mod() 实现。
16. divmod
- 参数: x1:NPUArray,被除数 x2:NPUArray,除数 dtype:py::dtype,可选
- 返回类型: (quotient: NPUArray, remainder: NPUArray)
- 功能: 同时计算商与余数:quotient = floor(x1 / x2),remainder = x1 - quotient * x2,底层调用 aclnnDivMod(mode=2)并手动计算余数。