예제 #1
0
def specialize_AllPairs(fn, xtype, ytype):
  x_elt_t = array_type.lower_rank(xtype, 1)
  y_elt_t = array_type.lower_rank(ytype, 1)
  typed_map_fn = specialize(fn, [x_elt_t, y_elt_t])
  elt_result_t = typed_map_fn.return_type
  result_t = array_type.increase_rank(elt_result_t, 2)
  return result_t, typed_map_fn
예제 #2
0
def specialize_Scan(map_fn, combine_fn, emit_fn, array_types, init_type = None):
  acc_type, typed_map_fn, typed_combine_fn = \
      specialize_Reduce(map_fn, combine_fn, array_types, init_type)
  typed_emit_fn = specialize(emit_fn, [acc_type])
  result_type = array_type.increase_rank(typed_emit_fn.return_type, 1)
  return result_type, typed_map_fn, typed_combine_fn, typed_emit_fn