code: def _get_compute_kernel(
      sharder: ModuleSharder[nn.Module],
      param: nn.Parameter,
      sharding_type: str,
      device_type: str,
  ) -> str:
      # TODO add placement support for compute_kernel
      compute_kernels = [EmbeddingComputeKernel.DENSE.value]
      if sharding_type != ShardingType.DATA_PARALLEL.value:
          compute_kernels += [
              EmbeddingComputeKernel.FUSED.value,
          ]
      if device_type in {"cuda"}:
          compute_kernels += [
              EmbeddingComputeKernel.FUSED_UVM.value,
              EmbeddingComputeKernel.FUSED_UVM_CACHING.value,
          ]
  
      if sharding_type == ShardingType.DATA_PARALLEL.value:
          if EmbeddingComputeKernel.DENSE.value in compute_kernels:
              return EmbeddingComputeKernel.DENSE.value
          elif EmbeddingComputeKernel.QUANT.value in compute_kernels:
              return EmbeddingComputeKernel.QUANT.value
      else:
          if (
              hasattr(param, "_in_backward_optimizers")
              and EmbeddingComputeKernel.FUSED.value in compute_kernels
          ):
              return EmbeddingComputeKernel.FUSED.value
          elif EmbeddingComputeKernel.DENSE.value in compute_kernels:
              return EmbeddingComputeKernel.DENSE.value
          elif EmbeddingComputeKernel.QUANT.value in compute_kernels:
              return EmbeddingComputeKernel.QUANT.value
  
      raise ValueError(
          f"Could not find compute kernel for sharding_type={sharding_type} in {compute_kernels}"
      )
  
imports: import math
  import warnings
  from typing import Callable, cast, Dict, List, Optional, Tuple, Type
  import torch
  from torch import distributed, nn
  from torchrec.distributed.comm import get_local_size
  from torchrec.distributed.embedding import EmbeddingCollectionSharder
  from torchrec.distributed.embedding_types import EmbeddingComputeKernel
  from torchrec.distributed.embeddingbag import EmbeddingBagCollectionSharder
  from torchrec.distributed.fp_embeddingbag import FeatureProcessedEmbeddingBagCollectionSharder
  from torchrec.distributed.fused_embeddingbag import FusedEmbeddingBagCollectionSharder
  from torchrec.distributed.mc_embedding import ManagedCollisionEmbeddingCollectionSharder
  from torchrec.distributed.mc_embeddingbag import ManagedCollisionEmbeddingBagCollectionSharder
  from torchrec.distributed.planner.constants import MIN_CW_DIM
  from torchrec.distributed.quant_embedding import QuantEmbeddingCollectionSharder
  from torchrec.distributed.quant_embeddingbag import QuantEmbeddingBagCollectionSharder
  from torchrec.distributed.types import EmbeddingModuleShardingPlan, EnumerableShardingSpec, ModuleSharder, ParameterSharding, ShardingType, ShardMetadata
  from torchrec.distributed.utils import none_throws
label_desc: Use image node_id 9 for calling a global function with example usage: _get_compute_kernel(sharder, param, sharding_type, device_type) and returns: EmbeddingComputeKernel, EmbeddingComputeKernel, EmbeddingComputeKernel, EmbeddingComputeKernel, EmbeddingComputeKernel