Reduced Extracted Features
After an in depth-analysis, we decided to reduce the number of features to the number of features used by our models. We found the intersection of features which are not used by any model, and decided to skim the feature vectors accodingly. Furthermore, where necessary, we added a buffer. This will be useful if we add new models which potentially require more feature indices.
The list of indices we keep in the new skimmed features can be found below.
Indices to keep: Nodes
| Indices | Total | Meaning | Section |
|---|---|---|---|
| 0 - 4 | 5 | Control Flow Nodes Types | Block (entry / exit), Sequence (entry / exit), Transition |
| 5 | 1 | For Entry | For (exit) |
| 6 - 17 | 12 | 1 full Assignment Symbolic Expression (coefficients for 10 symbols + constant term + non-affine flag) | For (init assignment) |
| 126 | 1 | 1 Assignment to an Untracked Symbol (i.e. a Symbol other than the 10 most common) | For (init assignment) |
| 127 - 138 | 12 | 1 full Condition Symbolic Expression (coefficients for 10 symbols + constant offset + relational operator) | For (condition) |
| 427 | 1 | Too many clauses flag | For (condition) |
| 428 - 439 | 12 | 1 full Assignment Symbolic Expression (coefficients for 10 symbols + constant term + non-affine flag) | For (update assignment) |
| 548 | 1 | 1 Assignment to an Untracked Symbol (i.e. a Symbol other than the 10 most common) | For (update assignment) |
| 549 | 1 | For Exit | For (exit) |
| 550 | 1 | Map Entry | Map (entry) |
| 551 - 562 | 12 | 1 full Assignment Symbolic Expression (coefficients for 10 symbols + constant term + non-affine flag) | Map (init assignment) |
| 671 | 1 | 1 Assignment to an Untracked Symbol (i.e. a Symbol other than the 10 most common) | Map (init assignment) |
| 672 - 683 | 12 | 1 full Condition Symbolic Expression (coefficients for 10 symbols + constant offset + relational operator) | Map (condition) |
| 972 | 1 | Too many clauses flag | Map (condition) |
| 973 - 1092 | 120 | 10 full Assignment Symbolic Expression (coefficients for 10 symbols + constant term + non-affine flag) * 12 | Map (update assignment) |
| 1093 | 1 | 1 Assignment to an Untracked Symbol (i.e. a Symbol other than the 10 most common) | Map (update assignment) |
| 1094 | 1 | Map Exit | Map (exit) |
| 1095 - 1097 | 3 | Access Node (container ID + primitive type + base type) | Access Node |
| 1098 | 1 | Tasklet Node | Tasklet Node |
| 1099 - 1108 | 10 | Library Node (Entry + side effect flag + 8 hash values) | Library Node |
Size of new feature vector: 211 --> reduction of over 80% of the original 1109 while keeping full expressivity and keeping a buffer for new operators.
Indices to keep: Edges
| Indices | Total | Meaning | Section |
|---|---|---|---|
| 0 - 1 | 2 | Control Flow Forward, Backward | Control Flow (Forward, Backward) |
| 2 | 1 | Control Flow Transition Forward | Control Flow Transition (Forward) |
| 3 - 14 | 12 | 1 full Assignment Symbolic Expression (coefficients for 10 symbols + constant term + non-affine flag) | Control Flow Transition (Assignment) |
| 123 | 1 | 1 Assignment to an Untracked Symbol (i.e. a Symbol other than the 10 most common) | Control Flow Transition (Assignment) |
| 124 | 1 | Control Flow Transition Backward | Control Flow Transition (Backward) |
| 430 | 1 | Data Flow Forward | Data Flow (Forward) |
| 431 - 674 | 244 | Data Flow (Source and destination connector types, Features for the source memory access begin_subset, Features for the destination memory access end_subset) |
Data Flow (Connectors and Subsets) |
| 675 | 1 | Data Flow Backward | Data Flow (Backward) |
Size of new feature vector: 263 --> reduction of over 60% of the original 673 while keeping full expressivity and keeping a buffer for new operators.