In this section, we will explain the studies that made for slowing down the error propagation. In this project, we will attack this research problem from multiple angles. First, we will consider different algorithms and gauge whether such choices have a significant impact on error propagation profiles. Second, we will consider compiler optimizations that slow error propagation.
3.3.1 Impact of the algorithms
Error propagation behavior is connected with the assignment statement at the assembly level. Since different algorithm performed different operations to solve the problem, it is expected that they have different error propagation behavior. Therefore, by switching the algorithms with their alternatives, …show more content…
In order to compare algorithms that have different characteristics, these different characteristics are considered.
From the viewpoint of different variables, the error only injected into common data, likewise, the propagation is analyzed for common data. In regard to different execution times, the error propagation speed is defined as corruption per time proportion. Thus, a more fair comparison between different algorithms is provided.
3.3.2 Impact of the compiler optimization techniques
Compiler helps to improve the performance by performing some optimization techniques, such as reducing the code size or increase memory re-use. In this section, we study the relation between compiler optimization and error propagation. Two loop transformation optimization, loop tiling and the loop unrolling are examined in detail.
To analyze the relation between these two optimization techniques and the error propagation speed, the framework that examined in detail in the previous section is used.
Optimization performed by using Intel C Compiler [31], they are enabled by using “#pragma block_loop factor(n)” and “pragma unroll (n)” …show more content…
If there are any possibility to optimization affects the code, they are ignored. Therefore, firstly the optimizations performed on the application source code, then the executable file is decompiled to c language with Hopper disassembler [32], the speed function which is explained the previous section added to the c code that obtained from disassembler.
Similar to the algorithms, the optimizations could also change the execution time. Therefore, when comparing error propagation speed of the optimized code and the original code, speed is calculated with respect to the percentage of the time.
3.3.2.1. Loop tiling
Strip-mine is a loop transformation which is using to improve the memory management; it applies to a single loop and transforms this loop to a nested loop [27]. By using this optimization, the loop divides into two loops that have smaller index set. The outer loop is iterate over the blocks and the inner loop iterate along the each block [27, 28]. It needed the clean-up code if the iteration size cannot divide strip size without remainder [29]. Code 1 is an example for strip-mine optimization. The optimization performed on the original code in 1a, the code in 1b is