code: def __scatter(self):
      if self.keep_gathered:
          return
  
      if self.is_gathered:
          # sanity check
          assert self.cuda_shard is None
  
          self.cuda_shard = torch.empty(
              self.shard_size,
              dtype=self.dtype,
              device=self.cuda_global_chunk.device,
          )
  
          self.cuda_shard.copy_(
              self.cuda_global_chunk[self.shard_begin : self.shard_end]
          )
  
          free_storage(self.cuda_global_chunk)
          self.is_gathered = False
  
imports: from dataclasses import dataclass
  from enum import Enum
  from typing import Dict, List, Optional
  import torch
  import torch.distributed
  from torch.distributed import ProcessGroup
  from colossalai.utils import get_current_device
  from colossalai.utils.device import IS_NPU_AVAILABLE
label_desc: Use image node_id 25 for calling the Chunk obj's underlying member method code with example usage: obj.__scatter() without return types