code: def backward(ctx, dx):
      # retrieve from context
      x, lut = ctx.saved_tensors
      # run kernel
      M = x.shape[0]
      grid = lambda opt: [ctx.spdims[0] * ctx.spdims[1] * ctx.block, M]
      _backward[grid](
          x,
          ctx.scale,
          dx,
          lut,
          ctx.maxlut,
          x.stride(0),
          dx.stride(0),
          BLOCK=ctx.block,
      )
      return (
          dx,
          None,
          None,
          None,
          None,
          None,
          None,
          None,
          None,
          None,
          None,
          None,
          None,
          None,
          None,
      )
  
file_path: DeepSpeed/deepspeed/ops/sparse_attention/softmax.py
imports: import torch
  import triton
  import triton.language
label_desc: Use image node_id 3 for calling the _sparse_softmax obj's underlying member method code with example usage: obj.backward(ctx, dx) and returns: dx,  None,  None,  None,  None,  None,  None,  None,  None,  None,  None,  None,  None,  None,  None