-
Notifications
You must be signed in to change notification settings - Fork 12
/
input_masterlist_ml.yaml
141 lines (124 loc) · 5.64 KB
/
input_masterlist_ml.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
defaultTimeOut: 500 #customize the default timeout threshold
## Both 'layerNo' and 'layerName' options have to be specified and do not have any default values set.
## The number of arguments specified for 'layerNo' and 'layerName' must be equal.
## Example:
## (layerNo= 0; 1; layerName= conv) is invalid and will produce error in the instrumentation stage.
## Valid layername arguments are: conv, relu, maxpool, matmul, add, avgpool, loop, nonmaxs, unsqueeze, softmax and all.
## To inject faults into all layers of a specific type in the model:
## LayerNo: The value '0' represents all layers of the type mentioned in LayerName;
## layerName: The specific layers (convolution, relu etc) for fault injection must be mentioned in layerName.
## For the below example, fault injection is done for all the convolution and relu layers in the model.
compileOption:
instSelMethod:
- customInstselector:
include:
- CustomTensorOperator
options:
- layerNo=0;0
- layerName=conv;relu
## To inject faults into a specific layer number in the model:
## LayerNo: The value '1' represents first layer of the 'layerName' type;
## layerName: The type of layer must be mentioned in layerName.
## In the below example, fault injection is done for the first convolution layer in the model
compileOption:
instSelMethod:
- customInstselector:
include:
- CustomTensorOperator
options:
-layerNo=1
-layerName=conv
## To inject faults into all the layers of the model:
## layerNo: The value '0' represents all layers of the 'layerName' type;
## layerName: Specify 'all' to inject fault in all the layers
compileOption:
instSelMethod:
- customInstselector:
include:
- CustomTensorOperator
options:
- layerNo=0
- layerName=all
## To use a location-based register selector to select targeting register:
regSelMethod: regloc
## To select the destination register
regloc: dstreg
## To select the 1st source register
regloc: srcreg1
## To select the 2nd source register
regloc: srcreg2
## To select the 3rd source register
regloc: srcreg3
## To incorporate the forward slice/backward slice of the selected instructions as injection targets:
includeInjectionTrace:
- forward # include forward trace of the selected instructions into fault injection targets
- backward # include forward trace of the selected instructions into fault injection targets
## To turn on the tracing (or turn off)
tracingPropagation: False/True # trace dynamic instruction values.
tracingPropagationOption:
maxTrace: 250 # max number of instructions to trace during fault injection run
debugTrace: False/True # print debug info or not
generateCDFG: False/True # generates the graph for trace
runOption:
## To inject a common hardware fault in all injection targets by random:
- run:
numOfRuns: 5 # run injection for 5 times
fi_type: bitflip/stuck_at_0/stuck_at_1 # specify the fault type
timeOut: 1000 # specify a custom timeout threashold for only this experiment
## To inject a bitflip fault at a specified cycle, on a specified register and
## a specified bit position. This can be used for reproducing an pervious injection
## result.
- run:
numOfRuns: 3
fi_type: bitflip
fi_cycle: 10
fi_reg_index: 3
fi_bit: 32
fi_reg: 2
verbose: True/False # prints return code summary at end of injection
timeOut: 1000
## To inject multiple bitflip fault on one register:
## (for example, 4 bits in one register)
- run:
numOfRuns: 5
fi_type: bitflip
fi_num_bits: 4
## To inject TWO faults into two registers, specifying a maximum cycles between
## the two faults:
## (for example, 4 cycles)
- run:
numOfRuns: 50
fi_type: bitflip
window_len: 10
## To use a custom fault injector (fault type) for this experiment:
## ('BufferOverflow(API)' is an fault injector for software failures
## shipped with LLFI)
- run:
numOfRuns: 5
fi_type: BufferOverflow(API)
## To inject a maximum of 4 bit-flip errors into multiple registers.
## The distance between each consecutive injection is controlled by a random number representing the number of dynamic instructions that needs
## to be executed between the consecutive injections. The lower bound and upper bound of the random number are especified as two of the run time options.
- run:
numOfRuns: 5
fi_type: bitflip
fi_max_multiple: 4
window_len_multiple_startindex: 10
window_len_multiple_endindex: 100
## To inject a maximum of 4 bit-flip errors into multiple registers starting from a specific bit of a specific register in a specific cycle.
## This configuration is used to compare single bit-flip results with multiple bit-flip results.
## The distance between each consecutive injection is controlled by a random number representing the number of dynamic instructions that needs
## to be executed between the consecutive injections. The lower bound and upper bound of the random number are especified as two of the run time options.
- run:
numOfRuns: 5
fi_type: bitflip
fi_cycle: 684347
fi_index: 417
fi_reg_index: 0
fi_reg_pos: 1
fi_bit: 15
fi_max_multiple: 4
window_len_multiple_startindex: 10
window_len_multiple_endindex: 100
kernelOption:
- forceRun