class_docstr: Shards embedding bags data-parallel, with no table sharding i.e.. a given embedding
  table is replicated across all ranks.
class_docstr_tok: ["Shards","embedding","bags","data-parallel",",","with","no","table","sharding","i.e","..","a","given","embedding","table","is","replicated","across","all","ranks","."]
code: def create_input_dist(
      self, device: Optional[torch.device] = None
  ) -> BaseSparseFeaturesDist[KeyedJaggedTensor]:
      return DpSparseFeaturesDist()
  
imports: from typing import Any, cast, Dict, List, Optional, TypeVar
  import torch
  from torchrec.distributed.embedding_lookup import GroupedPooledEmbeddingsLookup
  from torchrec.distributed.embedding_sharding import BaseEmbeddingDist, BaseEmbeddingLookup, BaseSparseFeaturesDist, EmbeddingSharding, EmbeddingShardingContext, EmbeddingShardingInfo, group_tables
  from torchrec.distributed.embedding_types import BaseGroupedFeatureProcessor, EmbeddingComputeKernel, GroupedEmbeddingConfig, ShardedEmbeddingTable
  from torchrec.distributed.types import Awaitable, NoWait, ShardingEnv, ShardMetadata
  from torchrec.sparse.jagged_tensor import KeyedJaggedTensor
  from torchrec.streamable import Multistreamable
label_desc: Use image node_id 1 for calling the DpPooledEmbeddingSharding obj's underlying member method code with example usage: obj.create_input_dist(device) and returns: DpSparseFeaturesDist