# Inversion-Based Deblending in Common Midpoint Domain Using Time Domain High-Resolution Radon
## 3 High-Performance Computing (HPC) Considerations  
The sparse hyperbolic Radon transform is used in our deblending algorithm to reformat the ill-posed blending operator to an inversion problem that uses sparse regularization. This Radon operator allows us to benchmark the performance of a highly parallelizable operation using a series of parallel processing methods. To properly code the HRT to run efficiently in openMP, we send outer offset loops to separate threads to calculate the transform in the adjoint operator; for the forward operator, we then send each outer slowness loop instead. The pseudo-code for the Radon transform can be written as seen in Algorithm 1. ```
1:functionradon
2:#PRAGMAOMPPARALLELFOR\(\triangleright\)insert for parallelization of loop
3:forq = slowness do
4:forh = offset do
5:\(moveout=h^{2}*q\)
6:forit = 0 nt do
7:\(time=\sqrt{(it*dt)^{2}+moveout}\)
8:\(model[iqNt+it]+=data[ihNt+INT(time/dt)]\)
9:endfor
10:endfor
11:endfor
12:endfunction
```  
**Algorithm 1** Radon Pseudo Code  
For our implementation in CUDA, we set up a two-dimensional thread configuration with one dimension for each of the time and slowness dimensions in the standard code, then calculated the transform independently for each output cell for each thread. To implement the HRT in openMPI, we send the data pertaining to each shot in the transform to separate  
Figure 3: Schematic of inversion-based deblending: Combining the blending operator with the Radon transform allows us to remap sporadic blending interference back into the coherent signal in its proper location, effectively explaining, rather than removing, interference. nodes and then calculate the transform independently on each node using either the CUDA or openMP methods stated above. We then collect the data at the master at the end of the calculation. The CUDA pseudo-code can be seen in Algorithm 2. ```
1:global
2:functionCUDA_radon
3:int it = blockIdx.x * blockDim.x + threadIdx.x
4:int iq = blockIdx.y * blockDim.y + threadIdx.y
5:if (iq >= nq |! it >= nt) return
6:\(\text{int}\,



is the wedge model dataset seen in Figure 4. The wedge model consists of two layers, one triangular wedge, and a set of hard points to test the reconstruction of low-amplitude diffractions. The wedge data were blended with two overlapping shots with delay times randomized between 0 and 400 samples. The deblending can be seen in Figure 5, where the blending noise seen in the pseudo deblended data in Figure 5b is removed through inversion in Figure 5c. Subsequently, the results were transformed into the shot domain, as depicted in Figure 6.

Despite some residual interference in the blended shot, the deblending process effectively removed the secondary interfering shot and retained the target shot well, including the diffractions. These can be observed near the top of both Figure 6b,c. A comparison of our inversion method and a denoising method is shown in Figure 7. The denoising method also utilizes the sparse HRT as a denoising engine to remove the random blending noise in the pseudo-deblended gathers. The primary distinction from the inversion method is that the denoising approach does not involve the blending operator. In the CMP domain, the high amplitudes of the blending noise make direct removal through general noise reduction methods difficult. This is because differentiating noise from data becomes increasingly difficult as the blending noise has the same amplitude as the signal we aim to recover. Without the additional information that the blending operator provides, this similarity makes it challenging to discern which parts of the data are noise and which are coherent signals. As can be seen in Figure 7, the denoising result successfully deblended the data, but at the cost of the lower-amplitude data of the diffraction arrivals, which were removed along with the blending noise. Figure 4: Velocity model 1: Wedge model consisting of two layer 9 diffraction points and one wedge.