Coverage for src/flag_gems/ops/pow.py: 91%
33 statements
« prev ^ index » next coverage.py v7.6.9, created at 2026-03-23 02:03 +0800
« prev ^ index » next coverage.py v7.6.9, created at 2026-03-23 02:03 +0800
1import logging
3import triton
4import triton.language as tl
6from flag_gems.utils import pointwise_dynamic, tl_extra_shim
8_pow = tl_extra_shim.pow
9logger = logging.getLogger(__name__)
12@pointwise_dynamic(promotion_methods=[(0, 1, "BOOL_TO_LONG")])
13@triton.jit
14def pow_func(x, exponent):
15 return _pow(x.to(tl.float32), exponent.to(tl.float32))
18def pow_tensor_tensor(A, exponent):
19 logger.debug("GEMS POW_TENSOR_TENSOR")
20 return pow_func(A, exponent)
23def pow_tensor_tensor_(A, exponent):
24 logger.debug("GEMS POW_TENSOR_TENSOR_")
25 return pow_func(A, exponent, out0=A)
28@pointwise_dynamic(is_tensor=[True, False], promotion_methods=[(0, 1, "BOOL_TO_LONG")])
29@triton.jit
30def pow_func_tensor_scalar(x, exponent):
31 return _pow(x.to(tl.float32), exponent.to(tl.float32))
34def pow_tensor_scalar(A, exponent):
35 logger.debug("GEMS POW_TENSOR_SCALAR")
36 return pow_func_tensor_scalar(A, exponent)
39def pow_tensor_scalar_(A, exponent):
40 logger.debug("GEMS POW_TENSOR_SCALAR_")
41 return pow_func_tensor_scalar(A, exponent, out0=A)
44@pointwise_dynamic(is_tensor=[False, True], promotion_methods=[(0, 1, "BOOL_TO_LONG")])
45@triton.jit
46def pow_func_scalar_tensor(x, exponent):
47 return _pow(x.to(tl.float32), exponent.to(tl.float32))
50def pow_scalar(A, exponent):
51 logger.debug("GEMS POW_SCALAR")
52 return pow_func_scalar_tensor(A, exponent)