class_docstr: Manage shuffle execution for ray by resolve dependencies between mappers outputs and reducers inputs based on
  mapper and reducer index.
docstr: Record mapper output ObjectRefs which will be used by reducers later.
  
  Parameters
  ----------
  subtask
  output_object_refs : List["ray.ObjectRef"]
      Mapper output ObjectRefs.
docstr_tok: ["Record","mapper","output","ObjectRefs","which","will","be","used","by","reducers","later",".","Parameters","--","--","--","--","--","subtask","output_object_refs",":","List","[","``","ray.ObjectRef","''","]","Mapper","output","ObjectRefs","."]
code: def add_mapper_output_refs(
      self, subtask: Subtask, output_object_refs: List["ray.ObjectRef"]
  ):
      """
      Record mapper output ObjectRefs which will be used by reducers later.
  
      Parameters
      ----------
      subtask
      output_object_refs : List["ray.ObjectRef"]
          Mapper output ObjectRefs.
      """
      shuffle_index, mapper_index = self._mapper_indices[subtask]
      self._mapper_output_refs[shuffle_index][mapper_index] = np.array(
          output_object_refs
      )
  
file_path: mars/mars/services/task/execution/ray/shuffle.py
imports: import numpy
  from typing import List, Iterable
  from .....core.operand import MapReduceOperand, OperandStage
  from .....utils import lazy_import
  from ....subtask import Subtask, SubtaskGraph
label_desc: Use image node_id 4 for calling the ShuffleManager obj's underlying member method code with example usage: obj.add_mapper_output_refs(subtask, output_object_refs) without return types