Coverage for src/flag_gems/ops/diagonal.py: 60%
15 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 torch
4import triton
6from flag_gems.utils import pointwise_dynamic
8logger = logging.getLogger(__name__)
11@pointwise_dynamic(is_tensor=[True], promotion_methods=[(0, "DEFAULT")])
12@triton.jit
13def copy_func(x):
14 return x
17def diagonal_backward(grad_output, input_sizes, offset, dim1, dim2):
18 logger.debug("GEMS 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