# GPU Accelerated PIC and SIC for OFDM-NOMA
## 2 System Model  
The considered that the NOMA system model in the reverse link consists of a single cell with \(K\) users. Each user uses all the \(N\) subcarriers of the orthogonal frequency division multiplexing (OFDM) symbol, and they are distinguished at the base station by interference cancellation techniques. Let \(\alpha_{k}\) be the channel attenuation between the \(k^{\text{th}}\) user and base station. We assume that the \(K\) users are distributed in the coverage area of the base station such that \(|\alpha_{1}|^{2}>|\alpha_{2}|^{2}>...>|\alpha_{K}|^{2}\) so that the first user is the closest to the base station and the \(K^{\text{th}}\) user is the farthest from the base station. The signal received by the base station is the superimposed signal of all the transmitted signals and can be written as:  
\[y(t)=\sum_{k=1}^{K}\sqrt{P}s_{k}(t)\alpha_{k}+n(t) \tag{1}\]  
where \(P\) is the transmitted power, which is equal for each user, \(n(t)\) is the additive white Gaussian noise term with variance \(\sigma_{n}^{2}\), and \(s_{k}(t)\) is the transmitted OFDM symbol by the \(k^{\text{th}}\) user. The discrete-time domain OFDM symbol transmitted by each user can be written as:  
\[s_{k}[m]=\frac{1}{\sqrt{N}}\sum_{n=0}^{N-1}S_{k}[n]e^{|2\pi mk/N} \tag{2}\]  
where \(S_{k}[n]\) is a complex symbol at the subcarrier \(n\) (either phase shift keying (PSK) or quadrature amplitude modulation (QAM) symbols) and \(N\) is the OFDM size. Then, the continuous-time OFDM waveforms transmitted by the \(k^{\text{th}}\) user \(s_{k}(t)\) can be obtained as \(s_{k}(t)=\sum_{m=0}^{N-1}s_{k}[m]p(t-mT_{s})\) where \(T_{s}\) is the baud rate and \(p(t)\) is the pulse-shaping filter. The received signal by the base station in Equation (2) includes all the signals from each user, and in order to decode each user successfully, the base station implements interference cancellation. The block diagrams of the two considered SIC and PIC receivers for OFDM are given in Figures 1 and 2,respectively. Both techniques include OFDM demodulation and modulation operations. To be specific, the fast Fourier transform (FFT) operation obtains the complex symbols at each subcarrier, the modulation/demodulation blocks deal with mapping/demapping of bit sequences to complex symbols, and the inverse fast Fourier transform (IFFT) obtains the time domain OFDM signal from frequency domain complex symbols. MATLAB functions used for FFT and IFFT computations use multiple CPU cores, while the rest of the computations including loops are not parallelized. In the SIC receiver (see Figure 1), the information signal of each user is decoded sequentially in an iterative manner [10]. The received signal by the base station is basically the sum of the OFDM signals received from each user. The first signal the receiver decodes (i.e., in the first iteration) belongs to the user that is closest to the base station, and its signal has the highest weight in the received signal, while other users' signals are considered as interference. After the bit sequences are obtained (ideally without any error), the OFDM signal of that particular user is regenerated by following the exact procedure at an OFDM transmitter and adjusting its amplitude and phase as it passes through the channel from that particular user to the base station. The regenerated signal is then subtracted from the received signal, and the process is repeated until all the users are decoded.