# A Novel Low-Complexity and Parallel Algorithm for DCT IV Transform and Its GPU Implementation
## 5 Experimental Results
For the first implementation of the algorithm with four sections, the average error obtained was 4.451 \(\times\) 10\({}^{-6}\) having a standard deviation of \begin{table}
\begin{tabular}{c c c c c} \hline \hline \multirow{2}{*}{**Processing Parameters**} & \multicolumn{2}{c}{**Jetson AGX Xavier**} & \multicolumn{2}{c}{**Jetson Orin Nano**} \\ \cline{2-5}  & **Classical Implementation** & **Parallel Implementation** & **Classical Implementation** & **Parallel Implementation** \\ \hline Mean [ms]: & 0.275 & 0.034 & 0.567 & 0.048 \\ SD: & 0.00118 & 0.00025 & 0.02028 & 0.00136 \\ \hline Min. [ms]: & 0.272 & 0.034 & 0.551 & 0.047 \\ Max. [ms]: & 0.277 & 0.035 & 0.630 & 0.053 \\ \hline Speedup: & 8.08 & & 11.81 \\ \hline \hline \end{tabular}
\end{table} 
Table 6: Performances were obtained by executing the two DCT computing algorithms (classical algorithm and the parallel implementation with 8 sections) when the GPU frequency was set to the maximum values. \begin{table}
\begin{tabular}{c c c c c} \hline \hline \multirow{2}{*}{**Processing Parameters**} & \multicolumn{2}{c}{**Jetson AGX Xavier**} & \multicolumn{2}{c}{**Jetson Orin Nano**} \\ \cline{2-5}  & **Classical Implementation** & **Parallel Implementation** & **Classical Implementation** & **Parallel Implementation** \\ \hline Mean [ms]: & 2.593 & 0.180 & 1.107 & 0.069 \\ SD: & 0.01165 & 0.00040 & 0.03348 & 0.00010 \\ \hline Min. [ms]: & 2.587 & 0.179 & 1.063 & 0.069 \\ Max. [ms]: & 2.637 & 0.181 & 1.195 & 0.069 \\ \hline Speedup: & 14.41 & & 16.04 \\ \hline \hline \end{tabular}
\end{table} 
Table 7: Performances obtained by executing the two DCT computing algorithms (classical algorithm and the parallel implementation with 8 sections) when GPUs frequency was set to the minimum values. \(8.76\times 10^{-12}\). In the case of the algorithm with eight sections, the average error obtained was \(7.186\times 10^{-6}\) having a standard deviation of \(2.13\times 10^{-12}\). The error is minimal, mainly because the introduced algorithm is not an approximation of the DCT IV algorithm but a decomposition (factorization) into four and eight sections. To gain a deeper understanding of the efficiency of the novel algorithm, a memory analysis was conducted based on the NVIDIA Nsight Compute tool. Memory is a very limiting factor for many applications, given that it exists in a limited quantity and is slower than CUDA units. By conducting a memory workload analysis of the classical algorithm, Figure 2, 2.31 K reading and 306 writing requests were made from global memory, and 289 writing requests were performed from local memory to finish its execution. The four-section parallel implementation of the same algorithm requires only 135 reading and 17 writing requests to the global memory and 94 requests to local memory to accomplish its job. The local memory (viewed as a private storage for an executing thread) has the same latency as the global memory--this memory is visible to all threads running in the GPU. In a GPU system, the local and global memory reside off the GPU chip and have the highest latency. From all the results presented above, only by relating these write/read operations performed by the two algorithms is it easy to see the superior efficiency of the novel algorithm presented in this study. To view a high-level overview of the obtained performances for all three ways of implementing the DCT IV algorithm (classical implementation based on relation (1), novel algorithm with four sections, and novel algorithm with eight sections) in Figures 3 and 4, the computation throughput and memory resources of the GPU are presented for a specific time frame presented in Table 8. All of these data were recorded on the Jetson AGX Xavier development board using the NVIDIA Nsight Compute tool. The results from Figures 3 and 4 are presented per SM unit and represent the achieved utilization percentage reported to the theoretical maximum limit.