← 返回 PaperDaily 前沿研究

GPU“吃不饱”?一招优化,4D超声重建飙到千赫兹!

继去年8月聊过用高斯泼溅做无监督3D超声重建之后,本期带来一篇更硬核的工程优化论文——直接在GPU层面把4D超声重建速度拉满。作者没有引入花哨的网络结构,而是从内存访问模式下手,精准诊断出传统延迟求和算法让GPU“吃不饱”的症结,并用数据重排、混合精度和Tensor Core三招巧妙化解。实验直接在RTX 4080 Super上跑出了千赫兹帧率,比现有库快3

GPU“吃不饱”?一招优化,4D超声重建飙到千赫兹!
🐉 龙哥读论文知识星球来了!
公众号每日8篇拆解不够看?星球无上限更AI领域论文、资讯、招聘、招博、开源代码,一站式干货,每日2分钟刷完即赚! 👇扫码加入「龙哥读论文」知识星球,前沿干货、实用资源一站式拿捏~ xingqiu_header

龙哥推荐理由:
继去年8月聊过用高斯泼溅做无监督3D超声重建之后,本期带来一篇更硬核的工程优化论文——直接在GPU层面把4D超声重建速度拉满。作者没有引入花哨的网络结构,而是从内存访问模式下手,精准诊断出传统延迟求和算法让GPU“吃不饱”的症结,并用数据重排、混合精度和Tensor Core三招巧妙化解。实验直接在RTX 4080 Super上跑出了千赫兹帧率,比现有库快3-1000倍,对于做脑机接口、术中成像这些对实时性要求极高的同学来说,这简直是及时雨。关键是,代码还开源了,非常值得放进工具箱。


原论文信息如下:
论文标题:
ffdas: volumetric ultrasound reconstruction at warp speed
发表日期:
2026年06月
发表单位:
Erasmus MC(伊拉斯姆斯大学医学中心)
原文链接:
https://arxiv.org/pdf/2606.13259v1.pdf
开源代码链接:
ffdas (开源CUDA库, 详见论文Section 1)

体积超声重建的时速挑战,瓶颈在哪?

想一下你走进手术室,医生正准备做脑部手术。他旁边放着一台超声设备,能实时显示大脑内部的三维血管搏动。这就是4D超快超声的终极愿景——以每秒数千帧的速度重建百万级体素的体积图像,让医生看到血流、组织运动,甚至神经活动的实时变化。但现实是,这个“千赫兹帧率”的梦,一直被卡在重建计算这个瓶颈上。
4D超快超声依赖的硬件——微波束成形探头、全填满的数千阵元矩阵阵列、匹配接收通道的研究扫描仪——近年才逐渐成熟。但硬件到位了,数据处理却跟不上。核心步骤叫波束形成(beamforming),最经典的方法是延迟求和(Delay-and-Sum, DAS):对每个体素,根据声波传播时间从各通道数据中找出对应采样点,加权累加。计算量有多大?一个典型的参数:128³个体素、1024个阵元、16次发射接收事件,一次重建需要约3.4×10¹⁰次累加操作。当前大多数波束形成器根本无法实时完成,数据只能先存下来再离线处理。但离线处理也慢,而且很多应用——比如术中脑成像、脑机接口——没有实时反馈就毫无意义。
理论上,GPU的海量并行非常适合延迟求和——每个体素可以独立计算。但实际跑起来,问题来了:计算不是瓶颈,内存访问才是。

GPU内存访问的“碎片化”

GPU里,线程被组织成32个一组的warp,所有线程在同一时刻执行同一条指令,并发起内存请求。如果每个线程处理一个体素,那么warp里的32个线程会访问不同的通道数据。由于相邻体素的传播时间相近,它们需要的采样点索引也相近——理论上存在空间局部性。但问题在于数据在内存中的存储方式:在基线实现中,每个通道的采样点按时间顺序连续存放(即维度顺序为B×Q×M×K,K为最内维度)。线程访问不同通道时,地址跨度巨大,而且每个线程只取很少的两个采样值,却触发一次完整的32字节扇区传输。大部分传输的数据根本用不上。
文章通过图1清晰地展示了这个问题。
图1: 延迟求和几何结构与数据布局。(a) 体素pn的成像几何,展示了发射延迟和接收延迟。相邻体素pn+1具有相似的路径长度,导致相邻的采样索引。(b) 基线内存布局:每个接收器内K连续。体素pn所需的采样点在K上不规则分布,因此处理相邻体素的线程请求同一内存扇区内的相邻地址。(c) Batch-inner布局:批索引b在每组(m,k)内连续。不同批处理项处理同一体素的线程现在访问连续地址,与GPU传输粒度对齐。为了方便清晰,观察维度q省略。
图1: 延迟求和几何结构与数据布局。(a) 体素pn的成像几何,展示了发射延迟和接收延迟。相邻体素pn+1具有相似的路径长度,导致相邻的采样索引。(b) 基线内存布局:每个接收器内K连续。体素pn所需的采样点在K上不规则分布,因此处理相邻体素的线程请求同一内存扇区内的相邻地址。(c) Batch-inner布局:批索引b在每组(m,k)内连续。不同批处理项处理同一体素的线程现在访问连续地址,与GPU传输粒度对齐。为了方便清晰,观察维度q省略。
这种“碎片化”的访问模式导致有效负载效率(payload efficiency)极低——只有约40%,意味着每传输32字节,真正用到的只有13字节。虽然L1和L2缓存能部分缓解(缓存命中率高),但大量的细碎请求仍然造成线程大部分时间都在等待内存,而不是做实际计算。这就是为什么看起来计算能力绰绰有余的GPU,跑延迟求和却远达不到理论峰值。

优化三连击:数据重组、精度压缩与计算加速

面对碎片化问题,论文作者没有引入花哨的深度学习网络,而是从GPU硬件特性出发,打了一套组合拳。三招如下:

第一招:Batch-Inner Tiling(数据重排)

既然每个warp里线程访问的地址碎片,那么让同一个warp里的线程处理同一个体素、但不同的批处理项(batch item)不就好了?批处理项对应的数据在内存中是连续存放的(如果内存布局改为批索引在最内层)。这需要将输入数据从B×Q×M×K重排为K×Q×M×B(B为最内维度)。这样,warp内的G个线程(每个线程负责几个批处理项)访问的就是同一采样点位置下的连续地址,完美对齐GPU的32字节扇区。有效负载效率直接飙升到100%。这个操作称为batch-inner(BI)tiling。算法描述见算法2,这里只给出核心思想:每个warp处理Nwarp个体素 × Bwarp个批处理项,通过共享几何计算避免冗余。
为了直观感受,看图1(c):在batch-inner布局下,每个(m,k)组合内的批索引连续,线程访问地址顺序排列。
插图
燃烧大脑的优化思路。

第二招:Mixed-Precision Storage(精度压缩)

大部分超声采集系统的采样精度和动态范围需求远低于32位浮点(FP32)。作者将输入数据从FP32降为16位浮点(FP16)存储,内存流量直接减半。插值和累加过程中再转回FP32以保证数值精度。这个转换与数据重排可以合并执行,开销极小。注意:在基线实现中,由于碎片化问题,即使数据量减半也收益不大(因为它浪费了大量带宽);但在batch-inner布局下,有效负载效率高,精度压缩的收益就实打实了——每字节传输都在干有用的事,减少一半数据量就等于加倍有效带宽。

第三招:Tensor Core Acceleration(张量核心加速)

当内存效率提高后,浮点运算逐渐成为新瓶颈。现代GPU配备了专用张量核心(Tensor Core),其矩阵乘累加(Matrix Multiply-Accumulate, MMA)吞吐量远高于标量单元。但延迟求和不是天然的稠密矩阵运算——每个体素只取两个采样点,属于全局稀疏计算。幸运的是,空间局部性再次发挥作用:相邻体素到同一接收器的路径长度非常相近,采样索引紧簇。作者据此将接收器分成大小为Mtile的块,每个warp处理Nwarp个相邻体素,统计这些体素所需的唯一采样索引集合U。然后对于每个唯一索引,构建权重矩阵W和样本矩阵Y,通过MMA指令一次性计算所有体素和批处理项的贡献。这个过程称为张量核心(TC)方法。U越小(远场体素),效率越高;近场体素簇松散,但整体显著加速。算法3展示了完整流程。
这三招环环相扣:数据重排解决内存碎片,精度压缩减轻带宽压力,张量核心提升计算吞吐。效果如何?下面看实测。

性能实测:从40%效率到100%的飞跃

实验在NVIDIA RTX 4080 Super上进行,锁频确保一致性。参数按表1设置,代表典型的超快4D超声场景:
表1: 评估和模拟参数。a 设备在分析期间锁定了时钟速度以确保一致的测量结果。
表1: 评估和模拟参数。a 设备在分析期间锁定了时钟速度以确保一致的测量结果。
图2展示了不同实现(BL基线、BI批内、TC张量核心)在不同规模下的性能缩放,以及FP16和FP32输入的对比。
图2: 性能缩放与Roofline分析。(A-C) 基线(BL)、批内(BI)和张量核心(TC)实现在不同网格尺寸、批处理大小和阵列大小下的运行时间缩放,FP16和FP32输入。(D-E) DRAM和L2 Roofline分析,展示运算强度与吞吐量。
图2: 性能缩放与Roofline分析。(A-C) 基线(BL)、批内(BI)和张量核心(TC)实现在不同网格尺寸、批处理大小和阵列大小下的运行时间缩放,FP16和FP32输入。(D-E) DRAM和L2 Roofline分析,展示运算强度与吞吐量。
从图2A-C看到,一旦问题规模足够饱和GPU,缩放接近线性。BI相对BL有约40%加速,FP16额外带来约20%提升。TC在计算受限区域(配合FP16)进一步拉升吞吐。图2D-E的Roofline显示,所有实现都落在计算受限区域(右侧),但BL虽然运算强度最高(L2复用率高),吞吐却最低——因为它虽然缓存命中率高,但大量细碎请求造成线程等待,实际算力远低于峰值。BI和TC通过优化内存访问模式,让计算能并行进行,最终吞吐更高。
图3具体量化了内存效率的提升:
图3: 内存访问效率。(A) 采用批内布局后,有效负载效率从40%提升到100%。(B) 请求合并减少了内存碎片,更宽的事务提高了带宽利用率。(C) L1和L2级的缓存命中率,展示了命中率与请求粒度之间的权衡。
图3: 内存访问效率。(A) 采用批内布局后,有效负载效率从40%提升到100%。(B) 请求合并减少了内存碎片,更宽的事务提高了带宽利用率。(C) L1和L2级的缓存命中率,展示了命中率与请求粒度之间的权衡。
有效负载效率从40%跃升至100%,请求合并使每个指令的服务扇区从1-2个增加到9.4个(BI)甚至12个(TC)。混合精度在高效布局下放大了收益,而基线实现中由于本就浪费带宽,FP16几乎没有帮助。
图4的warp停滞原因分布进一步揭示了瓶颈转移:
图4: Warp停滞原因分解。不同实现中warp停滞原因的分布,展示了从内存受限(Long Scoreboard)到更平衡的执行(优化变体中增加了算术管道利用率Math Throttle)的转变。
图4: Warp停滞原因分解。不同实现中warp停滞原因的分布,展示了从内存受限(Long Scoreboard)到更平衡的执行(优化变体中增加了算术管道利用率Math Throttle)的转变。
BL实现中绝大多数时间花在内存延迟停滞(Long Scoreboard),而BI和TC开始出现更多的算术管道压力(Math Throttle),标志着从内存受限转向计算受限,这正是我们希望看到的平衡。TC还增加了分支开销和同步成本,但总体吞吐依旧提升。

超越现有库:3-4倍性能提升

光自己跟自己比不够,还得跟同行比比。论文将ffdas与超声研究社区常用的两个库进行了对比:mach(专注CUDA的实现)和vbeam(基于JAX框架,支持自动微分)。公平起见,只比较计算吞吐,不比较功能差异(比如vbeam的微分能力是独特价值)。
结果如图5所示:
图5: 外部库性能对比。与已有的延迟求和实现(mach, vbeam)的运行时间对比,显示在匹配重建设置下性能大幅提升,同时保持图像质量。每张图像单独归一化,并显示32 dB动态范围。
图5: 外部库性能对比。与已有的延迟求和实现(mach, vbeam)的运行时间对比,显示在匹配重建设置下性能大幅提升,同时保持图像质量。每张图像单独归一化,并显示32 dB动态范围。
在RTX 4080 Super上,ffdas的Tensor Core实现(TC-FP16)比mach快约3-4倍,比vbeam快数百到上千倍(vbeam因自动微分特性有额外开销,但本身设计目标不同)。更重要的是,在主观图像质量上,所有实现没有任何可感知的差异——精度的降低没有损害成像效果。
插图
真不错!
这意味着,用消费级RTX 4080 Super就能实现128³体素、1024阵元、单次观测的千赫兹帧率重建(Q=1时帧率可达数千Hz)。对于需要复合多次观测(如Q=16)的场景,帧率约降为1/16,但依然能达到百赫兹级别,足以满足很多实时应用。

开源赋能:ffdas的潜力与未来

ffdas(全称ffdas: fast Fourier domain acceleration of delay-and-sum?实际上作者命名有深意,论文中未明确全称,但这个库不只包含延迟求和,还提供了GPU加速的秩截断(rank truncation)用于杂波滤波、结构化网格插值以及其他超快处理管道常用原语,并带有Python和MATLAB的绑定,能直接集成到已有的GPU阵列库中。代码已经在GitHub上开源(论文中提及)。
这项工作的最直接应用场景是那些对实时反馈有苛刻要求的领域:术中脑成像,医生在切除肿瘤时需要即时看到血管和功能区域;脑机接口,需要以毫秒级速度解析神经活动;4D功能性超声(fUSi),利用超快帧率观察大脑区域的功能连接。之前这些只能在离线处理中慢慢探索,ffdas打开了实时交互的大门。
但也要看到局限性:张量核心加速在近场(体素离阵列近)时效率会下降,因为不同体素到同一接收器的路径长度差异大,导致唯一采样索引增多,MMA指令数量增加。此外,该方法针对的是特定尺寸的输入(如128³体素、1024阵元),对于更极端的规模可能需要进一步调优。不过,论文给出的优化策略具有普适性——数据重排、混合精度、张量核心——这些思路完全可以迁移到其他领域,如地震成像、雷达信号处理等延迟求和类问题。
插图
快来加入开源,一起玩转超快超声!

龙迷三问

下面是龙哥对于大家可能的一些问题的解答:

什么是有效负载效率(payload efficiency)?有效负载效率指的是实际被线程用到的数据字节数占每次内存传输总字节数的百分比。GPU以32字节扇区为单位传输数据,如果一个warp内的32个线程只需要其中13字节,那么有效负载效率就是13/32 ≈ 40%。文中基线实现就是如此,因为线程访问地址碎片。batch-inner布局后,每个扇区都被完整使用,效率达到100%。

为什么混合精度(FP16)存储不影响最终图像质量?因为超声采集系统的原始信号动态范围有限,且体素累加后往往使用32位浮点,中间插值计算的精度由FP32保证。FP16只在存储和传输时使用,加载后立即转换为FP32参与运算。论文中通过实验证实,使用FP16输入与FP32输入重建的图像在视觉上没有任何可察觉的差异,说明16位精度足以表示原始信号。

为什么基线实现(BL)的L2运算强度很高,但吞吐反而最低?运算强度(operational intensity)是每字节传输对应的运算次数。BL由于缓存命中率高,很多请求在L1/L2缓存中满足,从DRAM角度看传输字节很少,所以运算强度很高。但这并不代表综合性能好,因为warp的停滞原因主要是内存延迟(Long Scoreboard),而非带宽瓶颈。大量细碎请求导致线程等待内存完成操作,即使数据来自缓存,也需要等待地址解析、缓存行填充等开销。BL看似“节省”了带宽,却牺牲了并发度。BI和TC的运算强度虽低,但通过更整齐的访问模式让GPU的流水线更顺畅,实际吞吐更高。

如果你还有哪些想要了解的,欢迎在评论区留言或者讨论~

龙哥点评

论文创新性分数:★★★✰✰

创新主要在于将GPU内存访问优化、混合精度和Tensor Core技术系统性地应用于超声延迟求和,属于工程优化层面的优秀工作,但并非全新算法突破。三招组合拳有机且巧妙,在超声社区中具有很高实用价值。

实验合理度:★★★★✰

实验设计全面:从微观的内存效率指标到宏观的运行时间;从自身不同实现对比到外部库对比;Roofline分析和Warp停滞分析都很专业。唯一的小遗憾是没有在更多样化的GPU(如A100、H100)上测试,不过RTX 4080 Super已经是消费级旗舰,结果有代表性。

学术研究价值:★★★✰✰

尽管原理上不新鲜,但论文系统地诊断并解决了超声领域的一个具体瓶颈,对同类系统的优化有重要借鉴意义。开放源码进一步放大了价值。研究价值主要体现在工程方法论和社区影响上。

稳定性:★★★★✰

延迟求和算法本身数值稳定,优化不改变算法逻辑,只是加速。在论文测试的规模下稳定达到预期帧率。近场场景Tensor Core效率有所下降,但整体稳定性良好。

适应性以及泛化能力:★★★★✰

方法不局限于超声,但凡基于延迟求和的天线阵列、声学成像、雷达系统均可借鉴。Tensor Core部分对远场更友好,但近场可通过调整瓦片大小适应。整体泛化能力较强。

硬件需求及成本:★★★✰✰

需要在支持Tensor Core的NVIDIA GPU(Volta架构以上)上才能发挥全部优势。文中使用RTX 4080 Super,属于高端消费级显卡(约800-1000美元),并非极低成本。但相比专用硬件加速器,GPU还是通用且可及的。训练成本不适用(无网络训练),推理阶段需要GPU。

复现难度:★★★★★

代码已开源(ffdas库),论文对优化细节描述充分(包括算法伪代码、参数选择、更优策略),并且提供了合成数据生成脚本。理论上按论文指导即可复现所有结果。5星好评。

产品化成熟度:★★★★✰

在RTX 4080 Super上已能实现千赫兹帧率的体积重建,满足术中脑成像、BCI原型系统的需求。但产品化还需考虑:多GPU扩展、实时数据传输(PCIe带宽)、系统集成等工程细节。论文提供了基础,距离成熟产品还有一段路,但作为算法库已经可直接使用。

可能的问题:论文局限:1) 只在单一GPU上测试,没有探讨多GPU或分布式场景的扩展性。2) 张量核心加速在近场效率下降,论文未提供自适应瓦片大小调整策略。3) 与mach的对比没有明确说明mach的优化水平,可能mach也是基线级实现。4) 缺少对真实超声数据(而非合成数据)的性能验证,虽然合成数据足以评估吞吐,但真实数据的噪声特性可能影响缓存行为。


主要参考文献

[1] Ff. UltraFFast ultrasound. Tanter & Fink, IEEE UFFC 2014.
[2] Shear wave elastography. Ultrasound in Medicine & Biology, 2015.
[3] Ultrafast Doppler. Nature Reviews Cardiology, 2016.
[4] Pulse wave imaging. IEEE UFFC, 2017.
[5] Electromechanical wave imaging. IEEE TMI, 2018.
[6] Functional ultrasound (fUSi). Neuron, 2020.
[7] Ultrasound localization microscopy (ULM). Nature methods, 2019.
[8] Delay-and-sum beamforming. Perrot et al., IEEE UFFC, 2021.
[9] Volumetric fUSi. Sieu et al., NeuroImage, 2022.
[10] Tensor core beamforming. Chen et al., IEEE TCI, 2023.
[11] NVIDIA Nsight Compute. NVIDIA Developer Tools, 2024.
[12] mach library. GitHub, 2023.
[13] vbeam library. GitHub, 2024.
[14] JAX framework. Google, 2023.
[15] ffdas library. Verhoef, Kruizinga, 2026. 论文附开源代码。

*本文仅代表个人理解及观点,不构成任何论文审核或者项目落地推荐意见,具体以相关组织评审结果为准。欢迎就论文内容交流探讨,理性发言哦~ 想了解更多原文细节的小伙伴,可以点击"阅读原文",查看更多原论文细节哦!       

end
欢迎加入龙哥读论文粉丝群,扫描下方二维码或者添加龙哥助手微信号加群:kangjinlonghelper。一定要备注:研究方向+地点+学校/公司+昵称(如 图像处理+上海+清华+龙哥),根据格式备注,可更快被通过且邀请进群。 『龙哥读论文』微信群目前包含:图像处理、大模型及智能体、自动驾驶及机器人、AI医疗及AI金融5个群

wechat_helper dianzan
转发文章 微博 X LinkedIn Facebook
龙哥读论文 · PaperDaily

本文基于龙哥读论文 PaperDaily 数据库整理,结合论文原文与工程视角进行解读。