code: def _wait_for_swap_complete(self):
      assert len(self.swapping_buffer_index) > 0
  
      self._start_timer(ASYNC_SWAPPER_WAIT_TIMER)
      assert self.aio_handle.wait() == self.num_pending_swaps
      self._stop_timer(ASYNC_SWAPPER_WAIT_TIMER)
      self.timer_names.add(ASYNC_SWAPPER_WAIT_TIMER)
  
      self.num_pending_swaps = 0
  
      for buffer_index in self.swapping_buffer_index:
          buffer = self._get_buffer(buffer_index)
          self.num_elements_swapped += buffer.get_num_elem()
          buffer.reset()
  
      self.free_buffer_index += self.swapping_buffer_index
      assert len(self.free_buffer_index) <= len(self.all_buffers)
      self.swapping_buffer_index = []
  
imports: import torch
  from deepspeed import comm
  from deepspeed.utils.logging import logger
  from deepspeed.runtime.swap_tensor.utils import swap_out_tensors, SwapBuffer
label_desc: Use image node_id 15 for calling the AsyncTensorSwapper obj's underlying member method code with example usage: obj._wait_for_swap_complete() without return types