| 30 | class Optimizer { |
| 31 | public: |
| 32 | explicit Optimizer(OptimizerType type, int32_t shard_num) { |
| 33 | type_ = type; |
| 34 | shard_num_ = shard_num; |
| 35 | local_only_ops_ = { |
| 36 | "AS", "REMOTE", |
| 37 | "API_GET_NB_FILTER", |
| 38 | "POST_PROCESS", |
| 39 | "BROAD_CAST_SPLIT", |
| 40 | "SAMPLE_NODE_SPLIT", |
| 41 | "SAMPLE_EDGE_SPLIT", |
| 42 | "GP_BROAD_CAST_SPLIT", |
| 43 | "GP_APPEND_MERGE", |
| 44 | "GP_UNIQUE_MERGE", |
| 45 | "GP_IDX_MERGE", |
| 46 | "GP_DATA_MERGE", |
| 47 | "GP_REGULAR_DATA_MERGE"}; |
| 48 | |
| 49 | /* key=op_name:input |
| 50 | * value=split_op:total_inputs*/ |
| 51 | graph_part_mode_split_map_ = { |
| 52 | {"API_SAMPLE_NODE:0", "BROAD_CAST_SPLIT:0"}, |
| 53 | {"API_SAMPLE_NODE:1", "SAMPLE_NODE_SPLIT:1,0"}, |
| 54 | {"API_SAMPLE_EDGE:0", "BROAD_CAST_SPLIT:0"}, |
| 55 | {"API_SAMPLE_EDGE:1", "SAMPLE_EDGE_SPLIT:1,0"}, |
| 56 | {"API_GET_NODE:0", "GP_BROAD_CAST_SPLIT:0"}, |
| 57 | {"API_GET_EDGE:0", "GP_BROAD_CAST_SPLIT:0"}, |
| 58 | {"API_SAMPLE_NB:0", "GP_BROAD_CAST_SPLIT:0"}, |
| 59 | {"API_GET_NB_NODE:0", "GP_BROAD_CAST_SPLIT:0"}, |
| 60 | {"API_GET_NODE_T:0", "GP_BROAD_CAST_SPLIT:0"}, |
| 61 | {"API_GET_P:0", "GP_BROAD_CAST_SPLIT:0"}}; |
| 62 | |
| 63 | /* key=op_name:output_idx |
| 64 | * |
| 65 | * value= |
| 66 | * merge_op_name: |
| 67 | * merge_info_relate_input_idx(key_input): |
| 68 | * input_idx_list(output idxs like "0,1")*/ |
| 69 | graph_part_mode_merge_map_ = { |
| 70 | {"API_SAMPLE_NODE:0", "GP_APPEND_MERGE:1:0"}, |
| 71 | {"API_SAMPLE_EDGE:0", "GP_APPEND_MERGE:1:0"}, |
| 72 | {"API_GET_NODE:0", "GP_UNIQUE_MERGE:-1:0"}, |
| 73 | {"API_GET_EDGE:0", "GP_UNIQUE_MERGE:-1:0"}, |
| 74 | // GP_IDX_MERGE need to consider merge_idx duplicate problem |
| 75 | {"API_SAMPLE_NB:0", "GP_IDX_MERGE:0:0"}, |
| 76 | // GP_DATA_MERGE need to consider merge_idx duplicate problem |
| 77 | {"API_SAMPLE_NB:1", "GP_DATA_MERGE:0:1,0"}, |
| 78 | {"API_SAMPLE_NB:2", "GP_DATA_MERGE:0:2,0"}, |
| 79 | {"API_SAMPLE_NB:3", "GP_DATA_MERGE:0:3,0"}, |
| 80 | {"API_GET_NB_NODE:0", "GP_IDX_MERGE:0:0"}, |
| 81 | {"API_GET_NB_NODE:1", "GP_DATA_MERGE:0:1,0"}, |
| 82 | {"API_GET_NB_NODE:2", "GP_DATA_MERGE:0:2,0"}, |
| 83 | {"API_GET_NB_NODE:3", "GP_DATA_MERGE:0:3,0"}, |
| 84 | {"API_GET_NODE_T:0", "GP_REGULAR_DATA_MERGE:0:0"}, |
| 85 | {"API_GET_P:even", "GP_IDX_MERGE:0:even"}, |
| 86 | {"API_GET_P:odd", "GP_DATA_MERGE:0:odd,even"}}; |
| 87 | } |
| 88 | |
| 89 | void AddRule(std::shared_ptr<OptimizeRule> rule) { |
nothing calls this directly
no outgoing calls
no test coverage detected