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 get_default(
      cls, batch_size, num_heads, q_seq_len, kv_len, d_model
  ):
      # TODO(apaszke,sharadmv): Select better parameters based on a heuristic.
      del batch_size, num_heads, q_seq_len, kv_len, d_model  # Unused.
      return BlockSizes(
          block_q=128,
          block_k_major=128,
          block_k=128,
          block_b=1,
          block_q_major_dkv=128,
          block_k_major_dkv=128,
          block_k_dkv=128,
          block_q_dkv=128,
          block_k_major_dq=128,
          block_k_dq=128,
          block_q_dq=128,
      )
  
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 3 for calling the BlockSizes obj's underlying member method code with example usage: obj.get_default(cls, batch_size, num_heads, q_seq_len, kv_len, d_model) and returns: BlockSizes