code: def test_should_group_together_with_prefetch(
      self,
      data_type: DataType,
      has_feature_processor: bool,
      embedding_dim: int,
      pooling_type: PoolingType,
      compute_kernel: EmbeddingComputeKernel,
  ) -> None:
      fused_params_groups = [
          {
              "cache_load_factor": 0.3,
              "prefetch_pipeline": True,
          },
          {
              "cache_load_factor": 0.5,
              "prefetch_pipeline": True,
          },
      ]
      tables = [
          ShardedEmbeddingTable(
              name=f"table_{i}",
              data_type=data_type,
              pooling=pooling_type,
              has_feature_processor=has_feature_processor,
              fused_params=fused_params_groups[i],
              compute_kernel=compute_kernel,
              embedding_dim=embedding_dim,
              num_embeddings=10000,
          )
          for i in range(2)
      ]
  
      expected_table_names_by_groups = [["table_0", "table_1"]]
      self.assertEqual(
          _get_table_names_by_groups(tables),
          expected_table_names_by_groups,
      )
  
imports: import random
  import unittest
  from typing import Any, Dict, List
  from unittest.mock import MagicMock
  import hypothesis.strategies
  from hypothesis import given, settings
  from torchrec.distributed.embedding_lookup import EmbeddingComputeKernel
  from torchrec.distributed.embedding_sharding import _get_compute_kernel_type, _get_grouping_fused_params, _get_weighted_avg_cache_load_factor, group_tables
  from torchrec.distributed.embedding_types import GroupedEmbeddingConfig, ShardedEmbeddingTable
  from torchrec.modules.embedding_configs import DataType, PoolingType
label_desc: Use image node_id 2 for calling the TestGroupTablesPerRank obj's underlying member method code with example usage: obj.test_should_group_together_with_prefetch(data_type, has_feature_processor, embedding_dim, pooling_type, compute_kernel) without return types