Skip to content

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.