## 4 SDR Receiver Performance Evaluation
The ideal BER curves are defined in the CCSDS 130.11-G report [36] and are depicted in Figure 6.  
Results  
Table 1 shows the comparison of the measured performance of the SW EGSE, Matlab Script, Serial Process, and GPU implementations for receiving a PL frame, recovering the impairments at front end, and finally producing the output bits related to the first PL frame codeword. The performance was measured on ModCods 1, 15, and 27, which require an increasingly larger number of operations. ACM 1 is the case that requires the smaller number of operations, proportional to the size of the data. In this case, GPU1 is executed in 36.17 milliseconds for a CW, which represents an improvement of \(\sim\)80\(\times\) with respect to the SW EGSE implementation. ACM 15 and 27 deal with larger sets of data, requiring a larger number of operations. Specifically, for ACM 27, the parallelization introduced in GPU1 produces a performance improvement of \(\sim\)90\(\times\) with respect to the SW EGSE. In general, the GPU1 version is more efficient than both the SW EGSE and the Matlab script, but, for ACM 1 and ACM 15, where smaller sets of data are processed, the serial process on the CPU is faster. This shows how an efficient CPU can actually perform better than a GPU when fewer data are processed. This happens in our case for the ACMs from 1 to 15, hence QPSK, 8 PSK and 16 APSK. From ACM 16, which is still a 16 APSK ModCod, the number of bits per codeword to be processed increases to 25,918. Given the larger datasets, the use of a GPU guarantees an efficiency gain that is then reflected for all the larger ACMs, which require us to process datasets with a number of bits larger than 25,918, up to 43,678 bits for ACM 27. With larger datasets, the GPU SIMD paradigm allows the GPU1 version performance to overcome serial process performance, giving an insight of GPU potential. The BER curves of the GPU 1 version are shown in Figure 7. We can see that the error decoding performance of this system is similar to the one of the ideal system: the implementation loss introduced in this version is small, with an offset of about 0.2/0.3 dB with respect to the ideal BER curves. This allows us to easily recover the transmitted information bits, also with the possibility of optimizing the code, as has been conducted for the GPU2 and GPU3 versions. The GPU2 and GPU3 naturally add an implementation loss that is reflected on the BER curves computed for these cases. \begin{table}
\begin{tabular}{c c c c} \hline \hline \multirow{2}{*}{**Implementation**} & \multicolumn{3}{c}{**Time (ms)**} \\  & **ACM1** & **ACM15** & **ACM27** \\ \hline SW EGSE & \(\sim\)3000 & \(\sim\)13,000 & \(\sim\)25,000 \\ Matlab Script & 876.15 & 2182.23 & 4519.16 \\ Serial Process & 31.56 & 134.32 & 309.12 \\ GPU1 & 36.17 & 143.32 & 268.55 \\ GPU2 & 10.17 & 37.32 & 68.55 \\ GPU3 & 1.32 & 2.88 & 4.24 \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Execution time comparison to decode 1 Codeword with different ACMs. Figure 6: Ideal BER on Linear AWGN Channel for PSK Modulations (**left**) and APSK Modulations (**right**)—as defined in [36]. Thanks to the optimization mentioned in Section 3.2.2, the GPU2 version, speeding up memory accesses, and implementing a simplified version of the Jacobian logarithm, performs better than the GPU1 version, with a gain of 3\(\times\) in the case of ACM1, up to \(\sim\)4\(\times\) for the highest ModCod (ACM27). Concerning the SW EGSE, the GPU2 version performance gain is up to \(\sim\)360\(\times\). Differently from the GPU1, the GPU2 version outperforms the serial process also when processing fewer data, hence for the lower ModCods. In comparison with the GPU1 implementation, the GPU2 system shows an implementation loss increment of about 0.3 dB, as shown in Figure 8. Hence, this optimized version, introducing a 3\(\times\) performance improvement (in the worst case), suffers an implementation loss of about 0.6 dB. We consider an implementation loss below 1 dB to be acceptable for increasing the performance of the system.