Coverage for src/flag_gems/runtime/backend/_cambricon/ops/diagonal.py: 0%

15 statements  

« prev     ^ index     » next       coverage.py v7.6.9, created at 2026-03-29 04:01 +0800

1import logging 

2 

3import torch 

4import triton 

5 

6from ..utils.pointwise_dynamic import pointwise_dynamic 

7 

8logger = logging.getLogger("flag_gems").getChild(__name__.lstrip(".")) 

9 

10 

11@pointwise_dynamic(is_tensor=[True], promotion_methods=[(0, "DEFAULT")]) 

12@triton.jit 

13def copy_func(x): 

14 return x 

15 

16 

17def diagonal_backward(grad_output, input_sizes, offset, dim1, dim2): 

18 logger.debug("GEMS_CAMBRICON diagonal backward") 

19 grad_input = torch.zeros( 

20 input_sizes, dtype=grad_output.dtype, device=grad_output.device 

21 ) 

22 diag = torch.diagonal(grad_input, offset, dim1, dim2) 

23 copy_func.instantiate(grad_output.ndim)(grad_output, out0=diag) 

24 return grad_input