def visit_vars_sort(sort_node, callback, cbdata): if debug_prints(): # pragma: no cover print("visiting sort vars for:", sort_node) print("cbdata: ", sorted(cbdata.items())) sort_node.key_arr = visit_vars_inner(sort_node.key_arr, callback, cbdata) for col_name in list(sort_node.df_vars.keys()): sort_node.df_vars[col_name] = visit_vars_inner( sort_node.df_vars[col_name], callback, cbdata)
def visit_vars_filter(filter_node, callback, cbdata): if config.DEBUG_ARRAY_OPT == 1: # pragma: no cover print("visiting filter vars for:", filter_node) print("cbdata: ", sorted(cbdata.items())) filter_node.bool_arr = visit_vars_inner(filter_node.bool_arr, callback, cbdata) for col_name in list(filter_node.df_in_vars.keys()): filter_node.df_in_vars[col_name] = visit_vars_inner(filter_node.df_in_vars[col_name], callback, cbdata) for col_name in list(filter_node.df_out_vars.keys()): filter_node.df_out_vars[col_name] = visit_vars_inner(filter_node.df_out_vars[col_name], callback, cbdata)
def visit_vars_filter(filter_node, callback, cbdata): if config.DEBUG_ARRAY_OPT == 1: print("visiting filter vars for:", filter_node) print("cbdata: ", sorted(cbdata.items())) df_vars = filter_node.df_vars df_in_vars = df_vars[filter_node.df_in] df_out_vars = df_vars[filter_node.df_out] filter_node.bool_arr = visit_vars_inner(filter_node.bool_arr, callback, cbdata) for col_name in list(df_in_vars.keys()): df_in_vars[col_name] = visit_vars_inner(df_in_vars[col_name], callback, cbdata) for col_name in list(df_out_vars.keys()): df_out_vars[col_name] = visit_vars_inner(df_out_vars[col_name], callback, cbdata)
def visit_vars_csv(csv_node, callback, cbdata): if debug_prints(): # pragma: no cover print("visiting csv vars for:", csv_node) print("cbdata: ", sorted(cbdata.items())) # update output_vars new_out_vars = [] for col_var in csv_node.out_vars: new_var = visit_vars_inner(col_var, callback, cbdata) new_out_vars.append(new_var) csv_node.out_vars = new_out_vars csv_node.file_name = visit_vars_inner(csv_node.file_name, callback, cbdata) return
def visit_vars_join(join_node, callback, cbdata): if debug_prints(): # pragma: no cover print("visiting join vars for:", join_node) print("cbdata: ", sorted(cbdata.items())) # left for col_name in list(join_node.left_vars.keys()): join_node.left_vars[col_name] = visit_vars_inner( join_node.left_vars[col_name], callback, cbdata) # right for col_name in list(join_node.right_vars.keys()): join_node.right_vars[col_name] = visit_vars_inner( join_node.right_vars[col_name], callback, cbdata) # output for col_name in list(join_node.df_out_vars.keys()): join_node.df_out_vars[col_name] = visit_vars_inner( join_node.df_out_vars[col_name], callback, cbdata)
def _hoist_internal(inst, dep_on_param, call_table, hoisted, typemap): uses = set() visit_vars_inner(inst.value, find_vars, uses) diff = uses.difference(dep_on_param) if len(diff) == 0 and is_pure(inst.value, None, call_table): if config.DEBUG_ARRAY_OPT == 1: print("Will hoist instruction", inst) hoisted.append(inst) if not isinstance(typemap[inst.target.name], types.npytypes.Array): dep_on_param += [inst.target.name] return True elif config.DEBUG_ARRAY_OPT == 1: if len(diff) > 0: print("Instruction", inst, " could not be hoisted because of a dependency.") else: print("Instruction", inst, " could not be hoisted because it isn't pure.") return False
def _hoist_internal(inst, dep_on_param, call_table, hoisted, typemap): uses = set() visit_vars_inner(inst.value, find_vars, uses) diff = uses.difference(dep_on_param) if len(diff) == 0 and is_pure(inst.value, None, call_table): if config.DEBUG_ARRAY_OPT == 1: print("Will hoist instruction", inst) hoisted.append(inst) if not isinstance(typemap[inst.target.name], types.npytypes.Array): dep_on_param += [inst.target.name] return True elif config.DEBUG_ARRAY_OPT == 1: if len(diff) > 0: print("Instruction", inst, " could not be hoisted because of a dependency.") else: print("Instruction", inst, " could not be hoisted because it isn't pure.") return False