执行概要
GE 医疗隶属于通用电气 (GE),是医疗技术和数字解决方案创新领域的全球杰出代表。
GE 通过智能设备、数据分析、应用和服务,帮助临床医生更快地做出更明智的决策。
GE 医疗 Advantage Workstation (AW) 平台的推出,使放射科医生能够在办公室、医院、家中或任何位置快速访问成像数据1。Advantage Workstation 服务器具备先进的可视化和诊断功能,使临床医生能够方便快捷地共享影像2,使放射科医生能够快速访问医学影像,获得良好的可视化整体体验。
GE AW 平台利用了英特尔® 至强® 处理器的强大功能和出色性能。因此,当 GE 医疗和英特尔发现有机会进一步提高成像性能时,双方一拍即合,立即决定联手合作。本文描述了双方解决的各种技术挑战,以及如何通过合作缩短了大约 70% 的可视化时间3。这种性能上的提升是团队多次对软硬件实施诸般优化的结果。本白皮书的“优化可视化管道”部分对此做了说明。如图所示,我们能在无损准确性的前提下加快医学影像的可视化速度4。
缩短可视化时间的重要性
在过去十年中,计算机断层扫描 (CT) 和磁共振成像 (MRI) 的日平均扫描量大幅增加5,导致放射科医生每天的阅片量不断增加,负担日益加重。有一种减负方法是缩短放射科医生等待影像研究结果加载的时间。从第一次点击用户界面 (UI),到完整获得全套扫描结果,每一秒都至关重要。放射科医生访问和研究影像的速度越快,越能尽早开始研究下一位患者的扫描结果。通过加快这一过程,我们能够大大增加放射科医生每天的阅片量。这不仅有助于减轻医生疲于阅片的情况6,还能更快获得患者检查结果,尽早开始妥善治疗。最终实现放射科医患双赢。
图 1 . 医学成像可视化处理流程高级块状图。
Advantage Workstation (AW) 服务器可视化
图 1 所示为 GE AW 服务器可视化处理流程的高级块状图。患者接受放射线扫描后生成的影像最初存储于大型索引型数据库。配备高速安全的内存并基于英特尔® 至强® 处理器的 AW 服务器通过该数据库访问生成的扫描影像,然后在英特尔® 处理器上运行可视化处理流程。
在可视化处理完成后,就可以通过各种方式查看影像,包括大型显示器、平板电脑、远程浏览站点(例如家里的笔记本电脑)和增强现实 (AR)/虚拟现实 (VR) 设备,甚至还可以进行 3D 打印。
可视化管道
图 1 显示的可视化处理流程由一系列步骤组成,我们称之为可视化管道。在优化性能时,我们力求提高管道流程每一步骤的速度,目标是将处理时间缩短 10 倍。
如图 2 所示,2D 影像/3D 立体影像的可视化管道包含三个主要步骤,它们涵盖了从放射科医生访问用户界面到视图处理完成并可用于操作的大部分流程。这三个步骤是:
1. 初始化
2. 加载
3. 后处理
优化可视化管道
为了实现缩短医学影像可视化时间的目标,我们需要解决两个主要问题:首先,什么样的硬件平台配置可以帮助我们提升性能?其次,如何优化这些系统中运行的代码,以在不牺牲影像质量的情况下,尽可能提高运行速度及效率?
硬件选择
医学影像需要大量存储空间。典型的 CT 影像切片为 512 x 512 x 12 位7。薄层切片数据集很容易就可以达到每项研究 500 张影像,而更全面的研究(例如 CT 血管造影和心脏 CT)可能需要多达 2500 张影像。因此,每项研究的平均 CT 数据集大小从大约 200 MB 到 1 GB 不等。同样,MRI 研究平均需要大约300 MB 的存储空间7。
此外,这些大型数据集的处理要求较高。从数据获取、处理,再到可视化,每一步都会产生巨大的计算需求。
为了满足这些需求,必须使用强大的计算平台。为此,我们的团队选择了基于英特尔® 至强® 可扩展处理器的平台。为了选出能够满足我们需求的特定英特尔® 至强® 处理器,我们采用各种硬件配置进行了多次测试。我们编译了可视化参考代码作为基准,然后进行试验,以评估不同内核数、线程数和处理器速度产生的影响。我们的工程团队遍布全球众多国家/地区,因此我们从配备第二代英特尔® 至强® 铂金 8260L 处理器的远程集群开始测试。最终,在成功评估完远程集群上的工作负载之后,GE 医疗团队采购了基于第二代英特尔® 至强® 金牌 6256 处理器的系统并进行本地部署,以进一步提高性能。之所以这么做是因为相较于内核数,频率对应用的影响更大;所以在进行内部评估时,我们选择了英特尔® 至强® 金牌 6256(12 核/3.6 GHz),而不是英特尔® 至强® 铂金 8260L(24 核/2.4 GHz),原因就是前者的频率和内核数组合更具成本效益。
通过使用远程集群,我们团队得以针对可视化参考代码特定部分的扩展和频率依赖性进行测试与评估。如图 2 所示,代码由几个不同部分组成,每个部分的表现又各有不同。
我们先来看看进行立体渲染 (volume rendering, VR) 时的情况。这是可视化参考代码中计算尤为密集的步骤。首先,我们在基于 6 核英特尔® 至强® W-2135 处理器的基准系统上运行代码。接下来,我们在基于 24 核第二代英特尔® 至强® 铂金 8260L处理器的系统上运行代码(在对软件进行小幅改动后)。如图 3 所示,将未优化的代码从单路工作站移至四路英特尔® 至强® 可扩展处理器的结果与预期一致。渲染时间缩短了 87%4。
通过基础测试,我们确定了从单路工作站迁移到基于第二代英特尔® 至强® 可扩展处理器的系统的优势。然后我们进入研究的下一个步骤:软件优化。
图 2 . GE AW 服务器中的立体影像可视化管道。
软件优化
在做出有关硬件的最终决策之前,我们不仅需要确保可视化处理流程中所涉及的软件在这些系统上运行良好,还要增强代码以优化其性能。为此,我们高度依赖英特尔® VTune™ 性能分析器8。这款经英特尔优化的性能工具可帮助开发人员快速分析代码性能,区别看待问题和瓶颈,而且能比其他方式更快地找到解决方案。
平均立体渲染时间(ms)
图 3 . 立体渲染时间比较。
图 4. 显示参考代码 CPU 使用热点的英特尔® VTune™ 性能分析器用户界面。
我们研究的主要软件优化包括:
• 线程处理和内存分配
我们通过检查代码,寻找更好地利用 CPU 线程的机会。为此,我们使用了 OpenMP API9 以及英特尔® 线程构建模块10(英特尔® TBB)。这是一个由英特尔开发的 C++ 模板库,用于优化多核处理器上的并行编程内存分配。借助英特尔® TBB,我们能够定义并行运行的任务,从而简化处理流程。
图 5 展示了原始测试结果,从中可以看到 OpenMP 的线程处理和英特尔® TBB 代理的内存分配都有所改进。我们把 VR 渲染性能提高了 1.9 倍,把遮挡能力提升了 3.0 倍,将防抖滤波器的性能提升了惊人的 25 倍4。
运行时间(ms)越低越好
图 5. 比较原始渲染运行时间,测试在英特尔® 至强® 铂金 8260L处理器(2.40 GHz、24 x 2 物理内核)上进行。
图 7 显示的是我们第二轮测试的结果。从中还可以看到线程处理得到了提高,而这一直是原有软件开发工具包 (SDK) 的瓶颈之一。与之前的结果相比,轴平面处理性能提高了 2 倍,而矢状面处理性能提高了 4 倍⁴。
图 6. 英特尔® VTune™ 性能分析器的屏幕截图,显示的是在处理与图 5 中相同的参考工作负载时,原有与改进后线程利用率的比较。
MIP 运行时间(ms)越低越好
图 7. 在新版本上进行渲染。线程处理和内存改善。
• 内存的高效使用
接下来,我们研究了非一致性内存访问 (NUMA) 设计。通过使用 NUMA 设计原则调整参考代码,我们就能更好地利用本地内存,并将输入较大的内存使用率提高 6 倍4,如图 7所示。我们在基于英特尔® 至强® 铂金 8260L 处理器、CPU频率为 2.40 GHz 的系统上对渲染优化进行了测试。
如图 8 所示,我们能在立体影像查看器中优化代码,从而将NUMA 内存设计的内存效率提高至少 1.5 倍4。
在输入大小为 1024 x 1024 的条件下的性能提升情况(旧/新时间)
图 8. 立体影像查看器。在输入大小为 1024 x 1024 的条件下的性能提升的倍数情况。
• 后处理算法优化
与此同时,我们还研究了如何优化后处理算法。为此,我们比较了三种不同的方法,如图 9 所示。
当前方法
算法中使用的原始方法可以使用 SIMD(单指令/多数据)“并行”处理单条光线的多个体素11。
优势
- 实施起来简单直接,效果显著。
- 使用能够利用部分 SIMD 优势的工作流程。
劣势
- 几乎没有缓存优势,导致内存时延问题。
注:“体素”之于 3D 模型相当于“像素”之于 2D 影像。
分组方法
分组方法不会并行跟踪单条光线的多个体素,而是并行跟踪多条“相邻”光线的单个体素。虽然此方法可以在英特尔® 高级矢量扩展技术12(英特尔® AVX)中实现,但因为需要比较打包的整数,我们建议至少使用英特尔® AVX2。(在某些方面,这一方法相当简单;每条光线都是独立的,因此无需考虑体素间的依赖关系。)
优势
- 每个“步骤”都可以使用相邻数据,从而提高缓存利用率。
- 此方法能够自然地处理体素间的依赖关系。
劣势
- 至少需要英特尔® AVX2 与 256 位寄存器,才能高效实现。
- 非平行光线会迅速散开,从而削弱性能优势。
- 该方法仍然需要跟踪整个三维体,因此无法体现“多组”优势。
多体分组法
这一类别包含几种不同的方法。这些方法大多涉及划分子三维体,即确定哪些光线穿过给定的子三维体等。但是,在所有情况下都遵循同样的思路:将三维体分成几个子三维体,然后跟踪子三维体内的光线。如果已正确划定子三维体的大小,那么无论光线之间的关系如何,您都能全面访问缓存的三维体数据。
优势
- 此方法可以使用当前方法或分组方法加以实现。
- 使用此方法可以改善任何光线的分布(只要光线交叉点易于计算)。
- 三维体数据大小可以调整到完全适合 L1 或 L2 缓存,从而大幅改善内存时延问题。您需要通过测试来确定哪类缓存可提供更好的性能。
- 在基本为“空”的三维体中,这样可以省去穿越部分三维体的工作。
劣势
- 过早“终止”的光线可能难以处理。
- 这种方法通常会增加算法的复杂性,尤其需要确定哪些光线与三维体相交。同样,您需要确定是否可以在多个三维体中“同时”跟踪某条光线。
- 对于迅速进出子三维体,在其中停留时间很短的光线,若三维体定义不当,会导致 SIMD 利用率较低。
图 9. 分析方法。(当前方法、分组方法、多体分组法)
图 10. 后处理算法。
通过试验各种预处理编码方法,我们实现了显著的性能提升。
我们来看一个例子:最大密度投影 (MIP) 算法。
如图 10 所示,后处理是可视化管道中耗时最长的单个步骤。 MIP 是早期在加载后使用的后处理算法之一。MIP 将 3D 数据投射到 2D 空间,这是在用户旋转、转动或用其他方式处理影像之前的必要步骤。MIP 处理需要大量计算资源,而我们明白优化 MIP 算法对于实现我们的性能提升目标至关重要。对各种优化方法的研究大大提升了性能。
虚拟化设置改进
• MIP 渲染,单用户(服务测试):提高 30-40%4。
• MIP 渲染,三个并行用户(服务测试):提高 20%4。
物理机性能提升
• MIP 渲染基准测试(单用户):摄像头的方向矢量在轴平面上旋转时提高 15%,在矢状面上旋转时提高 30-40%4。
渲染速度提升
• 分组光线跟踪渲染:MIP 速度提高 40%4。
结论 – 携手共创美好未来
在本文中,我们详细介绍了各种能够显著减少可视化时间的方法。我们以两种不同的方式展示了性能改进:
• 硬件:通过将处理转移到更强大的英特尔® 至强® 可扩展处理器,我们实现了大幅改进。
• 软件:通过使用英特尔® 性能优化工具分析、试验和调整可视化参考代码,我们成功地进行了代码分析和针对性能的代码优化,确定了问题和瓶颈,并比其他方式更快地找到了解决方案。除了最新英特尔® 硬件实现的性能提升之外,上述软件优化也带来了性能的飞跃。
得益于团队协作,我们将整个可视化管道的典型查看时间从约 17 秒缩短至约 5 秒。这意味着所需的可视化时间减少了近70%4。
请注意,这些最终或当前的可视化数据是在基于双路英特尔® 至强® 金牌 6256 处理器的系统上实现的,这是因为大多数旧有代码不能受惠于更高端的英特尔® 至强® 铂金处理器上的高内核数;此外,这款处理器还为团队提供了更加经济高效的解决方案。不过,仍有进一步优化和更新旧有代码,将时间缩短超过70% 的空间,合作团队将就此继续开展协作。
可视化管道的优化只是医学成像工作流程面临的挑战之一。英特尔和 GE 医疗计划未来继续开展合作,以进一步减少放射科医生查看医学影像耗费的时间,改善患者体验。敬请期待后续白皮书。
了解更多信息:
GE 医疗
gehealthcare.com/about
GE AW 服务器
gehealthcare.com/products/advanced-visualization/platforms/aw-server
英特尔® 至强® 可扩展处理器
intel.cn/xeon
面向开发人员的英特尔® 软件工具
software.intel.com/content/www/cn/zh/develop/home.html