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

挑战

加速分析飞机部件风洞试验的声音记录

解决方案

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

结果

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

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

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

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

工程师们使用MATLAB®并行计算工具箱™ 加快NVIDIA GPU上声学数据的处理。

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

挑战

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

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

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

解决方案

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

在MATLAB中,工程师们开发了一种算法来处理来自数据采集系统的16位整数数据。MATLAB算法将数据转换为压力信号,信号分解成块,块变换到频域,纠正对仪表和过滤效果,平均在整个街区建设提供估计的协方差矩阵的每一对麦克风。

该算法结合了Signal Processing Toolbox™中的Hamming、Kaiser和平顶窗口函数,以及快速傅里叶变换(fft)和矩阵乘法运算。它最初是为标准CPU操作而开发的。

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

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

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

结果

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

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

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