# On the Reliability Assessment of Artificial Neural Networks Running on AI-Oriented MPSoCs
## 5 Experimental Results
### Mapping and Optimal Scheduling
Indeed, when working at RTL, the injection locations are limited to some data path units, microarchitectural units such as registers [62] or memories. We bounded our analysis to the stuck-at faults on the inputs and outputs of the Flip-Flops composing the registers. In more detail, permanent faults were injected, one at a time, into the 8 RISC-V cores belonging to the cluster domain of the GAP architecture (as illustrated in Figure 9). To remark, the inference process was completely executed by the cluster's cores (PEs) in a SIMD configuration. The main core sitting in the fabric controller area was only in charge of turning on the cluster, so assessing its reliability is out of the scope of this paper. Faults were classified depending on their effect and in line with the ranking proposed in [34]. However, to cover the NCS in both the application and architectural level, we introduced a component-level metric, which is typically more \begin{table}
\begin{tabular}{l r r r r r r r r r} \hline \hline  & \multicolumn{6}{c}{**Chunks Variance-Static Scheduling**} \\ \hline
**Layer** & **Neurons** & **PE\({}_{0}\)** & **PE\({}_{1}\)** & **PE\({}_{2}\)** & **PE\({}_{3}\)** & **PE\({}_{4}\)** & **PE\({}_{5}\)** & **PE\({}_{6}\)** & **PE\({}_{7}\)** \\ \hline L0 & 32,768 & 12 & 10 & 8 & 6 & 5 & 5 & 6 & 4 \\ L1 & 8192 & 31 & 11 & 12 & 11 & 21 & 10 & 18 & 5 \\ L2 & 4096 & 18 & 15 & 17 & 9 & 13 & 8 & 11 & 9 \\ L3 & 1024 & 19 & 7 & 3 & 2 & 5 & 6 & 2 & 3 \\ L4 & 2048 & 1 & 3 & 3 & 4 & 4 & 4 & 4 & 4 \\ L5 & 512 & 1 & 1 & 2 & 2 & 1 & 1 & 2 & 2 \\ L6 & 10 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ \hline Total & 48,650 & 83 & 48 & 46 & 35 & 50 & 35 & 44 & 28 \\ \hline \hline \end{tabular}
\end{table} 
Table 2: Figures of variance when the chunks of neurons are assigned following static scheduling. Figure 9: Overview of the GAP-8 architecture and RTL fault injection location. but, as suggested in [63], can be interestingly applied to classification problems: the mean squared error (MSE) of the output vector. Therefore, a fault was _detected_ when one of the following situations occurred:  
* **SDC-1**: A silent data corruption (SDC) failure is a deviation of the network output from the golden network result, leading to a misprediction. Hence, the fault causes the image to be wrongly classified. * **Masked with MSE > 0**: The network correctly predicts the result, but the MSE of the faulty output vector is different from zero. It means that the top score is correct but the fault causes a variation in the outputs compared to the fault-free execution. * **Hang**: The fault causes the system to hang and the HDL simulation never finishes. In the remaining cases, the fault was said to be **masked with MSE = 0**. In particular, we propose an ILP and variance-based methodology to schedule portions of neural network layers on the available computing resources, to avoid critical portions of a network all being assigned to a single PE. The approach is described in Section 3.3 and takes as input the results shown in Table 2. It should be remarked that the variance figure for each chunk is fixed, regardless of the PE it is assigned to. Therefore, to obtain an optimal scheduling solution able to unify the \"critical\" load of the PEs, an ILP model was created by following (5)-(11), detailed in Section 3.3. Going into more detail, the constants were tuned to our target NCS, thus, _P = 8_ and _L = 6_. The reader should note that, as anticipated, the chunk assignment for fully connected layers does not make sense for topological reasons. Hence, in Table 2 the row _L6_ was excluded from the ILP formulation. Once all the formulas were created in a form suitable for the solver, they were passed to the ILP engine. The tool used was Opensolver [64], an open-source optimizer, and the specific optimization engine was CBC (COIN-OR Branch-and-Cut) solver. Apart from Table 2, the solver also takes the compilation constraints and the objective function as input.