用户故事

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

挑战

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

解决方案

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

结果

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

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

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

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

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

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

挑战

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

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

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

解决方案

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

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

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

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

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

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

结果

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

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

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

s manbetx 845产品使用

展示你的成功

加入客户推荐计划