code: def _sort_can_evict_chunks(
      can_evict_chunks: tuple, compute_idx: int, compute_list: tuple
  ) -> list:
      next_compute_idx = {
          chunk: len(compute_list) for chunk in can_evict_chunks
      }
      for i in range(len(compute_list) - 1, compute_idx, -1):
          for chunk in compute_list[i]:
              if chunk in next_compute_idx:
                  next_compute_idx[chunk] = i
      next_compute_idx = sorted(
          next_compute_idx.items(),
          key=lambda pair: pair[1],
          reverse=True,
      )
      return [t for (t, idx) in next_compute_idx]
  
imports: import functools
  import warnings
  from abc import ABC, abstractmethod
  from time import time
  from typing import Dict, List, Optional, Tuple, Type
  import torch
  from colossalai.utils import get_current_device
  from colossalai.utils.memory import colo_device_memory_capacity
  from colossalai.zero.gemini.chunk import Chunk
  from .chunk import Chunk, ChunkManager
  from .memory_tracer import ChunkMemStatsCollector
label_desc: Use image node_id 3 for calling the AutoPlacementPolicy obj's underlying member method code with example usage: obj._sort_can_evict_chunks(can_evict_chunks, compute_idx, compute_list) and returns: unknown