code: def shape_not_supported_reasons(
      cls, Mq: int, Mkv: int, K: int, Kv: int
  ) -> List[str]:
      reasons = super().shape_not_supported_reasons(Mq, Mkv, K, Kv)
  
      # In fbcode in mode/dev-nosan, we get nans from flash v2.1 if there
      # is a strange embedding dimension.
      if K not in {8, 16, 32, 64, 128, 256}:
          reasons.append(f"Embed dim {K} not supported")
  
      return reasons
  
imports: import os
  from dataclasses import replace
  from itertools import zip_longest
  from typing import Any, List, Optional, Set, Tuple, Union
  import torch
  from ..common import _get_storage_base, get_operator, register_operator
  from .attn_bias import AttentionBias, BlockDiagonalCausalFromBottomRightMask, BlockDiagonalCausalLocalAttentionFromBottomRightMask, BlockDiagonalCausalLocalAttentionMask, BlockDiagonalCausalMask, BlockDiagonalCausalWithOffsetPaddedKeysMask, BlockDiagonalMask, LocalAttentionFromBottomRightMask, LowerTriangularFromBottomRightLocalAttentionMask, LowerTriangularFromBottomRightMask, LowerTriangularMask
  from .common import AttentionBwOpBase, AttentionFwOpBase, Context, Gradients, Inputs, check_lastdim_alignment_stride1
label_desc: Use image node_id 1 for calling the BwOp obj's underlying member method code with example usage: obj.shape_not_supported_reasons(cls, Mq, Mkv, K, Kv) and returns: reasons