NASA Langley Research Center Accelerates Acoustic Data Analysis with GPU Computing
- Computations completed 40 times faster
- Algorithm GPU-enabled in 30 minutes
- Processing of test data accelerated
“Our legacy code took up to 40 minutes to analyze a single wind tunnel test; by using MATLAB and a GPU, computation time is now under a minute. It took 30 minutes to get our MATLAB algorithm working on the GPU—no low-level CUDA programming was needed.”Christopher Bahr, NASA
As both air traffic and housing and business development near airports increase, reducing the noise produced by commercial aircraft during takeoff and landing continues to be a high priority. To explore and evaluate noise-reduction techniques, researchers at NASA Langley Research Center are analyzing novel aircraft designs, such as the Hybrid Wing Body (HWB).
The engineers use MATLAB® and Parallel Computing Toolbox™ to accelerate the processing of acoustic data on NVIDIA GPUs.
“MATLAB replaces a much older algorithm for processing acoustic data, and Parallel Computing Toolbox accelerates the new algorithm by executing it on a GPU, with little change to the code,” says Christopher Bahr, research aerospace engineer at NASA Langley Research Center, Aeroacoustics Branch. “We now analyze data during the wind tunnel tests, which considerably reduces downtime.”
NASA engineers use up to 126 microphones to record sounds generated by an aircraft component during wind tunnel tests. After 30 seconds, the engineers reposition the microphones and begin another 30-second recording. A single run may include up to 14 recordings. Multiple runs may be conducted at different wind tunnel speeds or with different orientations of the aircraft. A single test may comprise hundreds of runs.
The engineers were using a legacy program written in Fortran, which took 20–40 minutes to process the approximately 2 gigabytes of data generated during each recording. The team wanted to reduce processing time so that they could identify hardware problems, as well as make on-the-fly decisions for upcoming run configurations. Further, they wanted to process the data in the facility, reducing data transfer overhead and simplifying data security procedures.
They knew that multicore processing on a single machine would not provide the required processing speed. The team needed GPU processing to meet their requirements.
NASA engineers re-implemented the old code in MATLAB and used GPU computing with Parallel Computing Toolbox to reduce processing times.
Working in MATLAB, the engineers developed an algorithm to process the 16-bit integer data from the data acquisition system. The MATLAB algorithm converts the data to a pressure signal, breaks the signal into blocks, transforms the blocks into the frequency domain, corrects for instrumentation and filter effects, and averages across the blocks to construct a covariance matrix that provides estimates of the power common to each pair of microphones.
The algorithm incorporates Hamming, Kaiser, and flat-top window functions from Signal Processing Toolbox™, as well as fast Fourier transforms (FFTs) and matrix multiplication operations. It was first developed for standard CPU operation.
To verify the MATLAB implementation, the team compared the results it produced with the results produced by the legacy code, ensuring a match to within acceptable tolerances. They then updated the MATLAB code, using Parallel Computing Toolbox to transfer acoustic data to a K20 GPU and execute computationally intensive operations.
To simplify batch processing of recordings, the engineers created a graphical interface in MATLAB for specifying algorithm options and selecting recordings to process. They developed a second interface for generating plots of results, including narrowband spectra and one-third octave band spectra plots. These plots helped assess noise source behavior and data quality, and are used to develop advanced noise suppression models.
The team plans to develop additional advanced processing algorithms in MATLAB. These algorithms will enable them to more accurately pinpoint the source of noise during wind tunnel tests.
Computations completed 40 times faster. “Our legacy code took up to 40 minutes to analyze a single wind tunnel test,” says Bahr. “The initial MATLAB implementation cut that time to 20 minutes. The addition of GPU computing with Parallel Computing Toolbox cut it to under a minute, with most of that time spent on data transfer.”
Algorithm GPU-enabled in 30 minutes. “Many operations we perform, including FFTs and matrix multiplication, are GPU-enabled MATLAB functions,” says Bahr. “Once we developed the initial MATLAB code for CPU execution, it took 30 minutes to get our algorithm working on the GPU—no low-level CUDA programming was needed.”
Processing of test data accelerated. “In the past, our data processing algorithms were too slow to process sound data in this way during wind tunnel tests,” Bahr recalls. “With MATLAB code running on the GPU, we analyze data after each recording, identify any problems with the test setup, and correct them immediately.”