class_docstr: Redistributes pooled embedding tensor in RW fashion by performing a reduce-scatter
  operation.
  
  Args:
      pg (dist.ProcessGroup): ProcessGroup for reduce-scatter communication.
code: def _create_output_dist_module(
      self, sharding_ctx: Optional[EmbeddingShardingContext] = None
  ) -> None:
      if (
          sharding_ctx is not None
          and sharding_ctx.variable_batch_per_feature
      ):
          self._dist = VariableBatchPooledEmbeddingsReduceScatter(
              pg=self._pg,
              codecs=self._codecs,
          )
      else:
          self._dist = PooledEmbeddingsReduceScatter(
              pg=self._pg,
              codecs=self._codecs,
          )
  
imports: import math
  from typing import Any, cast, Dict, List, Optional, Tuple, TypeVar, Union
  import torch
  import torch.distributed
  from torchrec.distributed.dist_data import EmbeddingsAllToOneReduce, KJTAllToAll, KJTOneToAll, PooledEmbeddingsReduceScatter, VariableBatchPooledEmbeddingsReduceScatter
  from torchrec.distributed.embedding_lookup import GroupedPooledEmbeddingsLookup, InferGroupedPooledEmbeddingsLookup
  from torchrec.distributed.embedding_sharding import BaseEmbeddingDist, BaseEmbeddingLookup, BaseSparseFeaturesDist, bucketize_kjt_before_all2all, EmbeddingSharding, EmbeddingShardingContext, EmbeddingShardingInfo, group_tables
  from torchrec.distributed.embedding_types import BaseGroupedFeatureProcessor, EmbeddingComputeKernel, GroupedEmbeddingConfig, KJTList, ShardedEmbeddingTable
  from torchrec.distributed.types import Awaitable, CommOp, NullShardingContext, QuantizedCommCodecs, ShardedTensorMetadata, ShardingEnv, ShardMetadata
  from torchrec.sparse.jagged_tensor import KeyedJaggedTensor
  from torchrec.streamable import Multistreamable
label_desc: Use image node_id 3 for calling the RwPooledEmbeddingDist obj's underlying member method code with example usage: obj._create_output_dist_module(sharding_ctx) without return types