Casos prácticos

美国国家航空航天局Langley Research Center Accelerates Acoustic Data Analysis with GPU Computing

Challenge

加速飞机组件风洞测试的声音录音的分析

Solution

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

Results

  • 计算更快完成了40倍
  • 算法在30分钟内启用了GPU
  • 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.”

克里斯托弗·巴尔(NASA)
Wind tunnel test setup featuring the Hybrid Wing Body model (inverted), with 97-microphone phased array (top) and microphone tower (left).

随着机场附近的空中交通,住房和业务发展的增加,降低了起飞和降落期间商业飞机产生的噪音仍然是重中之重。为了探索和评估降噪技术,NASA Langley研究中心的研究人员正在分析新型飞机设计,例如混合机翼体(HWB)。

工程师使用MATLAB®和并行计算工具箱™,以加速NVIDIA GPU上的声学数据。

“ MATLAB取代了一种用于处理声学数据的较旧的算法,并平行计算工具箱通过在GPU上执行该算法,从而加速了新算法,而该代码几乎没有更改。”。“我们现在在风洞测试中分析数据,这大大降低了停机时间。”

Challenge

美国国家航空航天局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.

Solution

美国国家航空航天局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.

为了验证MATLAB实施,该团队将其产生的结果与旧版代码产生的结果进行了比较,从而确保了与可接受的公差内的匹配。然后,他们使用并行计算工具箱更新了MATLAB代码,将声学数据传输到K20 GPU并执行计算密集型操作。

为了简化记录的批处理处理,工程师在MATLAB中创建了一个图形接口,用于指定算法选项并选择要处理的记录。他们开发了第二个界面来生成结果图,包括窄带光谱和三分之一的八度带光谱图。这些图有助于评估噪声源行为和数据质量,并用于开发高级抑制噪声模型。

该团队计划在MATLAB中开发其他高级处理算法。这些算法将使它们能够更准确地指定风洞测试期间的噪声源。

Results

  • 计算更快完成了40倍。“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.”

  • 算法在30分钟内启用了GPU。“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。Bahr回忆说:“过去,我们的数据处理算法太慢,无法在风洞测试期间以这种方式处理声音数据。”“通过在GPU上运行的MATLAB代码,我们在每次录制后分析数据,确定测试设置的任何问题,然后立即纠正它们。”