class_docstr: An operator optimized for very small values of K (``K <= 32``)         and f32 pre-Ampere as it does not use TensorCores.
  Only supports contiguous inputs in BMK format, so an extra reshape         or contiguous call might be done.
  
  :Deprecated:
  
      This operator is deprecated and should not be used in new code
code: def not_supported_reasons(cls, d: Inputs) -> List[str]:
      reasons = super(FwOp, cls).not_supported_reasons(d)
  
      attn_bias = d.attn_bias
      if isinstance(
          attn_bias, BlockDiagonalCausalWithOffsetPaddedKeysMask
      ):
          # If we don't get here, we've an error elsewhere
          if d.query.shape[0] != 1:
              reasons.append("One formal batch element expected")
  
          if d.query.shape[-1] != 128:
              reasons.append("Only head_dim==128 for now.")
  
          if d.key.stride(-1) != 1:
              reasons.append("expect keys to have last dim contiguous")
  
          if d.value.stride(-1) != 1:
              reasons.append(
                  "expect values to have last dim contiguous"
              )
  
          q_starts = attn_bias.q_seqinfo.seqstart_py
          if attn_bias.q_seqinfo.max_seqlen != 1:
              reasons.append("decoding expects one query")
          elif d.query.shape[1] != len(q_starts) - 1:
              reasons.append("empty lanes not supported yet")
  
          if attn_bias.k_seqinfo.padding > 8192:
              reasons.append("key padding exceeds 8192")
  
      return reasons
  
file_path: xformers/xformers/ops/fmha/decoder.py
imports: from typing import Any, List, Optional, Set, Tuple
  import numpy
  import torch
  from ..common import get_xformers_operator, register_operator
  from .attn_bias import BlockDiagonalCausalWithOffsetPaddedKeysMask
  from .common import AttentionFwOpBase, Context, Inputs
label_desc: Use image node_id 1 for calling the FwOp obj's underlying member method code with example usage: obj.not_supported_reasons(cls, d) and returns: reasons