MathWorks Newsroom 

Signal processing algorithms are becoming increasingly complex and computationally intensive. In addition, the need to process large data sets and realtime streaming data creates demand for highperformance computing. Many signal processing algorithms consist of structurally parallel data flows and iterative computation for parallel and sequential data points. Because graphical processing units (GPUs) consist of thousands of smaller, more efficient cores designed for parallel performance, GPU computing is wellsuited to accelerating the computation and simulation of signal processing algorithms.
However, programming for GPUs can be complex. Identifying parallelism in algorithms requires domain expertise, and bottlenecks of data exchange between CPU and GPU can offset the benefits of using GPUs for acceleration. Learning programming for GPUs puts a huge burden on engineers who want to quickly simulate and validate their algorithms.
Several MATLAB^{®} products, including Phased Array System Toolbox™, provide highly optimized domain specific GPUenabled algorithms. The combination of MATLAB and GPUs provides the convenience of a technical computing language as well as the computing power of GPUs, and enables engineers to perform computations on powerful GPUs using the familiar MATLAB language and environment. This article illustrates how, by changing only a few lines of MATLAB code, engineers can accelerate an algorithm with a GPU, speeding a radar system simulation by hundreds of times.
Clutter return consists of the radio frequency echoes that are returned from the environment that are uninteresting to the radar operators. Radar system engineers often need to simulate the clutter return to test signal processing algorithms, such as spacetime adaptive processing (STAP) algorithms. GPUs and parallel computing provide a good solution to these intensive computational problems.
In a clutter simulation, engineers model ground reflections using a grid of patches between each combination of transmit and receive antennas. The number of clutter patches depends on the terrain coverage, but it usually ranges from thousands to millions. Higher numbers of ground patches give higher fidelity of clutter simulation, but also result in more intensive computation and longer simulation time using CPUs.
Even though clutter return from later pulses might depend on the signal generated in earlier pulses, the computation at each patch is independent of computations at other patches. This parallelism is well suited to GPU computing.
Radar engineers can take advantage of the GPUoptimized function in Phased Array System Toolbox to improve the speed of the clutter simulation (Figure 1) without having to learn GPU programming. Simulating a radar system in minutes or seconds on GPUs rather than hours on a CPU lets radar engineers focus their efforts on solving system design problems instead of devising simulation strategies.
Phased Array System Toolbox provides a clutter model with an option to run the simulation on GPUs by simply changing one line of code in the existing program (Figure 2). Simulating clutter return on the GPU instead of the CPU can accelerate processing by hundreds of times.
Figure 3 shows simulation time for different simulation runs. In these simulations, each pulse consists of 200 range samples with a range resolution of 50 m. Combinations of the clutter patch width and the maximum clutter range can result in various numbers of total clutter patches. For example, a clutter patch width of 10 degrees plus a maximum clutter range of 5 km yields 3600 clutter patches. The simulations are carried out on the following system configurations:
Using a GPU improves the simulation speed by tens to hundreds of times. The speedup factor (the pink line in the figure) may vary, depending on the number of clutter patches. The speedup factor increases to nearly 500 times when the number of patches is 93,600, and then decreases when the number patches continues to increase. The speedup factor levels off at over 60 times when the number of patches increases beyond 9,360,000.
Similar GPUaccelerated functions are provided in other MATLAB products: Signal Processing Toolbox™ provides GPUaccelerated functions such as xcorr, xcorr2, fftfilt, xcov, and cconv; Communications System Toolbox™ provides GPUenabled System objects™ for computationally intensive algorithms such as Turbo, LDPC, and Viterbi decoders.
The ability to use MATLAB for GPU acceleration of signal processing algorithms without requiring GPU programming skills puts the tremendous power of GPU computing into the hands of domain experts—the researchers, scientists, and engineers who are used to working in MATLAB. This enables them to accelerate their product design or research while focusing on their areas of expertise.
For more information about the products mentioned, visit:
You can also email John Zhao, product manager for Phased Array System Toolbox, at john.zhao@mathworks.com.