Developer and radio amateur Evan Mayer has released a tool dubbed effex, using NVIDIA GPU hardware to accelerate interferometry for radio astronomy from two low-cost RTL-SDR software-defined radios.
"Did you see the 'picture' of the supermassive black hole shadow released by the Event Horizon Telescope collaboration in 2019," Mayer explains in an interview with RTL-SDR.com, who brought the project to our attention. "The 'ring of fire' or 'donut' image? [That was] created by 'aperture synthesis.'"
"In aperture synthesis, the signals from each pair of antennas distributed across an area can be cross-correlated to measure one component of the 2D Fourier transform of the radio brightness distribution on the sky. But, you need coherent receivers (or REALLY good time stamps) to cross-correlate the signals from the antennas. Get enough pairs of antennas, and you can start to more fully sample the 2D Fourier space of the sky brightness distribution, which you can then use to reconstruct a real image."
The trouble with interferometry for aperture synthesis is that it's computationally intensive. That's where effex comes in: "Effex computes the cross-correlation of signals from two USB software-defined radios (RTL-SDRs) with synchronized clocks," Mayer explains of the tool.
The software, written in Python, accelerates the computation by offloading it onto an NVIDIA graphics processor via CuSignal. It's capable of running on desktop and laptop hardware as well as on NVIDIA's Jetson family of embedded systems — though at least four logical CPU cores are recommended so the GPU can be fed data quickly enough.
"Provided the data rate from the USB SDRs is not too high, this correlator runs in real time," Mayer explains. "This is accomplished by multicore and multithreaded execution to process data from both channels concurrently."
The software is available on Mayer's GitHub repository under the GNU General Public License 2.0, along with links to other tools required including modifeid RTL-SDR libraries which disable the SDR's phase-locked loop (PLL) dithering.