Anwenderberichte

NASA兰利研究中心用GPU计算加速声学数据分析

挑战

加快对飞机部件风洞试验录音的分析

解决方案

使用MATLAB和并行计算工具箱重新实现处理声学数据的遗留程序,并通过在GPU上运行计算密集型操作来减少处理时间

结果

  • 计算速度快了40倍
  • 算法gpu在30分钟内启动
  • 加速了测试数据的处理

“我们的传统代码花了40分钟来分析一个风洞测试;通过使用MATLAB和图形处理器,计算时间现在不到一分钟。让我们的MATLAB算法在gpu上工作花了30分钟,不需要低级CUDA编程。”

克里斯托弗·巴尔,美国宇航局
风洞测试设置具有混合翼体模型(倒置),97麦克风相控阵(上)和麦克风塔(左)。

随着空中交通以及机场附近住房和商业发展的增加,减少商用飞机在起飞和降落时产生的噪音仍然是一个高度优先事项。为了探索和评估降噪技术,美国宇航局兰利研究中心的研究人员正在分析新型飞机设计,如混合翼体(HWB)。

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

NASA兰利研究中心航空声学分部的航空航天工程师Christopher Bahr说:“MATLAB取代了处理声学数据的旧算法,并行计算工具箱通过在GPU上执行新算法来加速新算法,而对代码的改动很少。”我们现在在风洞测试期间分析数据,这大大减少了停机时间。”

挑战

美国国家航空航天局的工程师使用多达126个麦克风来记录在风洞测试中飞机部件产生的声音。30秒后,工程师重新放置麦克风,开始另一个30秒的录音。一次运行可能包括多达14个录音。多次运行可以在不同的风洞速度或与不同的飞机方向进行。一个测试可能包含数百个运行。

工程师们使用的是用Fortran语言编写的遗留程序,每次记录产生的约2g数据需要20-40分钟。该团队希望减少处理时间,以便能够识别硬件问题,并为即将到来的运行配置即时做出决策。此外,他们希望在设施中处理数据,减少数据传输开销并简化数据安全程序。

他们知道单台机器上的多核处理无法提供所需的处理速度。团队需要GPU处理来满足他们的需求。

解决方案

NASA工程师在MATLAB中重新实现了旧的代码,并使用GPU计算和并行计算工具箱来减少处理时间。

在MATLAB中,工程师们开发了一种算法来处理来自数据采集系统的16位整数数据。MATLAB算法将数据转换为压力信号,将信号分解为块,将块转换为频域,校正仪表和滤波效应,并通过块的平均值来构建协方差矩阵,提供对每对麦克风的共同功率的估计。

该算法结合了Hamming, Kaiser,和信号处理工具箱™中的平顶窗口函数,以及快速傅立叶变换(FFTs)和矩阵乘法运算。它最初是为标准CPU操作而开发的。

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

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

该团队计划在MATLAB中开发额外的高级处理算法。这些算法将使他们能够在风洞测试中更准确地查明噪声源。

结果

  • 计算速度快了40倍.Bahr说:“我们的传统代码花了40分钟来分析一个风洞测试。”最初的MATLAB实现将这个时间缩短到20分钟。GPU计算和并行计算工具箱的加入将其缩短到1分钟以下,其中大部分时间都花在了数据传输上。”

  • 算法gpu在30分钟内启动.“我们执行的许多操作,包括fft和矩阵乘法,都是gpu支持的MATLAB函数,”Bahr说。“一旦我们开发了CPU执行的初始MATLAB代码,我们花了30分钟来让我们的算法在gpu上工作,不需要低级CUDA编程。”

  • 加速了测试数据的处理.“过去,我们的数据处理算法太慢,无法在风洞测试中以这种方式处理声音数据,”Bahr回忆道。“通过在GPU上运行MATLAB代码,我们在每次记录后分析数据,识别测试设置中的任何问题,并立即纠正它们。”

s manbetx 845产品使用

Berichten Sie über Ihre erfolgreichen Projekte

处理客户参考程序