code: def test_1_table_perf(self) -> None:
      tables = [
          EmbeddingBagConfig(
              num_embeddings=100,
              embedding_dim=10,
              name="table_0",
              feature_names=["feature_0"],
          )
      ]
      model = TestSparseNN(tables=tables, weighted_tables=[])
      sharding_options = self.enumerator.enumerate(
          module=model,
          sharders=[
              cast(
                  ModuleSharder[torch.nn.Module],
                  EmbeddingBagCollectionSharder(),
              )
          ],
      )
  
      expected_perfs = {
          ("dense", "data_parallel"): [
              Perf(
                  fwd_compute=9.356002212235228e-05,
                  fwd_comms=0,
                  bwd_compute=0.00018712004424470456,
                  bwd_comms=0.000225593945387348,
              ),
              Perf(
                  fwd_compute=9.356002212235228e-05,
                  fwd_comms=0,
                  bwd_compute=0.00018712004424470456,
                  bwd_comms=0.000225593945387348,
              ),
          ],
          ("fused", "table_wise"): [
              Perf(
                  fwd_compute=0.000327460077428233,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.000654920154856466,
                  bwd_comms=6.357828776041667e-05,
              )
          ],
          ("fused_uvm", "table_wise"): [
              Perf(
                  fwd_compute=0.05759444891237746,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.11518889782475492,
                  bwd_comms=6.357828776041667e-05,
              )
          ],
          ("fused_uvm_caching", "table_wise"): [
              Perf(
                  fwd_compute=0.013339313780795867,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.026678627561591735,
                  bwd_comms=6.357828776041667e-05,
              )
          ],
          ("fused", "column_wise"): [
              Perf(
                  fwd_compute=0.000327460077428233,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.000654920154856466,
                  bwd_comms=6.357828776041667e-05,
              )
          ],
          ("fused_uvm", "column_wise"): [
              Perf(
                  fwd_compute=0.05759444891237746,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.11518889782475492,
                  bwd_comms=6.357828776041667e-05,
              )
          ],
          ("fused_uvm_caching", "column_wise"): [
              Perf(
                  fwd_compute=0.013339313780795867,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.026678627561591735,
                  bwd_comms=6.357828776041667e-05,
              )
          ],
          ("fused", "table_column_wise"): [
              Perf(
                  fwd_compute=0.000327460077428233,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.000654920154856466,
                  bwd_comms=6.357828776041667e-05,
              )
          ],
          ("fused_uvm", "table_column_wise"): [
              Perf(
                  fwd_compute=0.05759444891237746,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.11518889782475492,
                  bwd_comms=6.357828776041667e-05,
              )
          ],
          ("fused_uvm_caching", "table_column_wise"): [
              Perf(
                  fwd_compute=0.013339313780795867,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.026678627561591735,
                  bwd_comms=6.357828776041667e-05,
              )
          ],
          ("fused", "row_wise"): [
              Perf(
                  fwd_compute=6.804365245261984e-05,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.0001360873049052397,
                  bwd_comms=0.00016798276699240525,
              ),
              Perf(
                  fwd_compute=6.804365245261984e-05,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.0001360873049052397,
                  bwd_comms=0.00016798276699240525,
              ),
          ],
          ("fused_uvm", "row_wise"): [
              Perf(
                  fwd_compute=0.011967677696078432,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.023935355392156864,
                  bwd_comms=0.018426483752680762,
              ),
              Perf(
                  fwd_compute=0.011967677696078432,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.023935355392156864,
                  bwd_comms=0.018426483752680762,
              ),
          ],
          ("fused_uvm_caching", "row_wise"): [
              Perf(
                  fwd_compute=0.0027718054609445954,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.005543610921889191,
                  bwd_comms=0.004316567291897281,
              ),
              Perf(
                  fwd_compute=0.0027718054609445954,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.005543610921889191,
                  bwd_comms=0.004316567291897281,
              ),
          ],
          ("fused", "table_row_wise"): [
              Perf(
                  fwd_compute=6.804365245261984e-05,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.0001360873049052397,
                  bwd_comms=0.00016798276699240525,
              ),
              Perf(
                  fwd_compute=6.804365245261984e-05,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.0001360873049052397,
                  bwd_comms=0.00016798276699240525,
              ),
          ],
          ("fused_uvm", "table_row_wise"): [
              Perf(
                  fwd_compute=0.011967677696078432,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.023935355392156864,
                  bwd_comms=0.018426483752680762,
              ),
              Perf(
                  fwd_compute=0.011967677696078432,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.023935355392156864,
                  bwd_comms=0.018426483752680762,
              ),
          ],
          ("fused_uvm_caching", "table_row_wise"): [
              Perf(
                  fwd_compute=0.0027718054609445954,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.005543610921889191,
                  bwd_comms=0.004316567291897281,
              ),
              Perf(
                  fwd_compute=0.0027718054609445954,
                  fwd_comms=6.357828776041667e-05,
                  bwd_compute=0.005543610921889191,
                  bwd_comms=0.004316567291897281,
              ),
          ],
      }
  
      perfs = {
          (
              sharding_option.compute_kernel,
              sharding_option.sharding_type,
          ): [shard.perf for shard in sharding_option.shards]
          for sharding_option in sharding_options
      }
  
      self.assertEqual(expected_perfs, perfs)
  
imports: import unittest
  from typing import cast
  import torch
  import torchrec.optim
  from torchrec.distributed.embedding import EmbeddingCollectionSharder
  from torchrec.distributed.embedding_types import EmbeddingComputeKernel
  from torchrec.distributed.embeddingbag import EmbeddingBagCollectionSharder
  from torchrec.distributed.fbgemm_qcomm_codec import CommType, get_qcomm_codecs_registry, QCommsConfig
  from torchrec.distributed.planner.constants import BATCH_SIZE
  from torchrec.distributed.planner.enumerators import EmbeddingEnumerator
  from torchrec.distributed.planner.shard_estimators import _calculate_storage_specific_sizes, EmbeddingOffloadStats, EmbeddingPerfEstimator
  from torchrec.distributed.planner.types import ParameterConstraints, Perf, Topology
  from torchrec.distributed.quant_embeddingbag import QuantEmbeddingBagCollectionSharder
  from torchrec.distributed.test_utils.test_model import TestSparseNN
  from torchrec.distributed.tests.test_quant_model_parallel import _quantize
  from torchrec.distributed.tests.test_sequence_model import TestSequenceSparseNN
  from torchrec.distributed.types import CacheParams, CacheStatistics, ModuleSharder, ShardingType
  from torchrec.modules.embedding_configs import EmbeddingBagConfig, EmbeddingConfig
label_desc: Use image node_id 2 for calling the TestEmbeddingPerfEstimator obj's underlying member method code with example usage: obj.test_1_table_perf() without return types