“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.
Accelerate the analysis of sound recordings from wind tunnel tests of aircraft components
Use MATLAB and Parallel Computing Toolbox to re-implement a legacy program for processing acoustic data, and cut processing time by running computationally intensive operations on a GPU