用户故事

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

挑战

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

解决方案

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

后果

  • 计算速度快了40倍
  • 30分钟内使能算法gpu
  • 加速试验数据的处理

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

克里斯托弗·巴尔,NASA
风洞试验装置采用混合翼身模型(倒置),带有97个麦克风相控阵(顶部)和麦克风塔(左侧)。

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

工程师使用MATLAB®和并行计算工具箱™加速处理的声音数据在NVIDIA gpu。

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

挑战

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

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

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

解决方案

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

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

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

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

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

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

后果

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

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

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

下载188bet金宝搏使用的产品

展示你的成功

加入客户参考计划