class_docstr: Tile sizes parameterizing FlashAttention kernels.
  
  Those parameters have negligible effect on numerics, but affect performance
  greatly.
class_docstr_tok: ["Tile","sizes","parameterizing","FlashAttention","kernels",".","Those","parameters","have","negligible","effect","on","numerics",",","but","affect","performance","greatly","."]
code: def has_backward_blocks(self) -> bool:
      backward_blocks = (
          self.block_q_major_dkv,
          self.block_k_major_dkv,
          self.block_q_dkv,
          self.block_k_dkv,
          self.block_k_major_dq,
          self.block_k_dq,
          self.block_q_dq,
      )
      return all(b is not None for b in backward_blocks)
  
imports: from __future__ import annotations
  import dataclasses
  import functools
  from typing import Any, NamedTuple
  import jax
  from jax import lax
  from jax.experimental import pallas
  from jax.experimental.pallas import tpu
  import jax.numpy
label_desc: Use image node_id 2 for calling the BlockSizes obj's underlying member method code with example usage: obj.has_backward_blocks() and returns: all