下载文章
下载提高英特尔® 至强® 处理器 5500 系列的医疗成像性能 [PDF 488KB]摘要
医疗成像领域竞争激烈,那些占据市场的产品可在最短时间内提供最好的图像以保证患者诊断与治疗的准确性,从而最大程度提高了医疗质量及医务人员和医疗设备的效率。医疗成像技术的演进导致数据集越来越大,算法也越来越复杂,从而不断推高了对处理能力的要求,并为性能优化拓展了许多机会。本简介介绍了为优化英特尔® 至强® 处理器 5500 系列图像重建算法所做的工作。与原始代码相比,该工作将速度提高了 50 倍。内容包括应用特性描述(计算与数据访问)、性能增强工作(线程与高速缓存优化)及性能问题(线程开销与数据访问模式)。简介
医疗成像扫描仪种类繁多,但大多数有一些共性:它们会产生巨大的数据流,而这些数据流需要进行处理以生成有利于诊断的图像。一些常见的成像系统(或所谓的医疗器械)有计算机断层扫描 (CT)、磁共振成象 (MRI)、正电子发射断层显像 (PET)、及单光子发射计算机断层成像术 (SPECT)。如你所想,图像质量对于诊断的准确性极为关键。在许多情况下,获取图像所需的时间在向患者提供恰当护理的过程中具有十分重要的作用。扫描仪收集数据的时间与其将数据处理成图像的时间相比显得非常短,但是,在允许患者离开之前,常常有必要看到图像,以确定获得了正确的图像。显然,这一处理时间限制了成像研究的次数,成像研究可在随时进行,并会影响医务人员和设备的效率(及投资回报)。从多个方面来说性能都很关键。
所需的处理量取决于具体的医疗器械,但一般会需要服务器集群或者甚至专用硬件在合理的时间内提供图像。最近,英特尔® 至强处理器 5500 系列帮助我们裁剪了一半的服务器(与前代服务器相比),但随着扫描仪分辨率的提高,对处理速度的要求会继续增加。
医疗成像设备介绍
医疗成像扫描仪(被称为医疗行业的医疗设备)并不会生成图像,而是产生巨大的数据流,工作人员需要对处理这些数据流以重建对诊断有用的图像。所需重建处理的详情依不同的医疗设备而有所不同。图 1a
图 1b
CT 扫描仪及重建的轴向立体切面图
CT (即计算机断层扫描)扫描仪当这个环形物旋转,人体会穿过环形物的小孔。检测器的检测数据表示 x 射线能量的数量,该能量使其沿着检测器和 x 射线源之间的一系列射线穿过身体。检测器的数据用于重建表示人体内部结果的图像(立体切面图)。CT 对于骨骼尤其灵敏。图 1 向我们展示了横截面,其中有肋骨、脊柱和一些内脏。
图 2a
图 2b
运行中的 MRI 扫描仪及人类头骨盖的重建立体切面图
MRI(磁共振成像)包括在强烈的磁场及脉冲射频场中,对组织中能量状态变化的测量。一系列传感器可检测到这些能量变化及内部组织结构图像中的后处理结果。MRI 非常易于区分不同的组织类型。图 2 所示为人体头骨的横截面,详细展示了大脑、眼睛、鼻子、嘴巴及其它构造。
图 3a
图 3b
盖子打开的 PET 扫描仪及重建的立体切断面,后者从新陈代谢活动方面对正常头颅及患有帕金森症的头颅进行了比较
PET 及 SPECT 为核成像技术,需要将放射性药物注入人体中,并会生成图像,显示组织和肌肉中的新陈代谢过程是如何消耗这些药物的。这两种设备的具体构造各不相同,但都可生成反应新陈代谢活动和非活动器官的图像。图 3b 对正常人体及(患有帕金森症)患者的头部 PET 图像进行比较。图 4b 所示为心脏的 SPECT“立体切片图”,其中的“明亮”部位表示心肌正在接收代表活体心脏组织的放射性示踪剂并使其进行新陈代谢。由于数据的嘈杂本质,PET 和 SPECT 图像比 CT 和 MRI 显示的内容要少,但可在计算密集型重建计算的帮助下处理这些噪音。 #p#page_title#e#
图 4a
图 4b
SPECT 扫描仪和展示血液灌注的人类心脏的重建图像
图像重建代码
与常规重建相比,新算法初步的单线程实施多耗费了很多时间。该代码针对英特尔® 架构进行了分析和优化。所有的工作都是在配备了 2 个 英特尔® 至强® 处理器 X5560 的服务器平台上进行的,其中处理器的运行速度为 2.8GHz,内存为 12GB。操作系统为 64 为 Linux*。代码分析
代码检验显示,代码被整合到在较大数据集(若干千兆字节)的许多小子集上执行各种运算的序列片段中。根据一些复杂的计算结果,从大数据集中以非均匀的方式提取子集。代码段只在数据子集上进行了几项简单的算术运算。鉴于非均匀的寻址(非预取或高速缓存友好型),我们预计内存访问会成为一种限制因素,且检验无法明确高速缓存的效率。采用英特尔® VTune™ 性能分析器,我们断定主代码段大约占了 90% 的执行时间(总时钟周期)。在这些“热点”中,CPI(每条指令时钟周期)非常高。经过进一步仔细研究高速缓存的性能,我们发现二级高速缓存缺失是合理的。那么,是什么导致了高 CPI 呢?经过深入研究,我们发现多了一半的页面查询工作。这是有道理的,因为我们的工作集比包括 4kB 页面的数据 TLB 的容量大许多。英特尔至强处理器 X5560 支持 2MB 的大页面,有助于在每次 DTLB 输入时处理 500 倍的数据,从而大大减少了处理大型数据集所需进行的页面查看。实施 2MB 的大页面使页面浏览不再大不了。
对数据索引的进一步调查表明,非均匀的跨度和数据访问遍布大型数据集。我们对数据进行了重新整理,以便索引一直增加,同时在子集之间实现最大化的高速缓存再使用。除了提高高速缓存的再使用率之外,这还有助于处理器的预取器更好地协调工作。大页面和数据重排序的合力将性能提高了两倍。
为了让目标平台发挥最大效用,我们用英特尔® C/C++ 编译器取代了 GNU GCC* 编译器。这一改变将性能又提高了 1.2 倍。
我们通过在可用线程间划分数据元素的数量,开发出一种数据并行的线程模型。在若干地方的线程间实现同步是很有必要的。我们希望同步过程轻便,这样可以使用非常简单的自旋锁。
英特尔® 至强® 5560 处理器结果
采取的行动 | 加速1 |
大页面 + 数据重排 | 2倍 |
英特尔® C/C++ 编译器 | 1.2倍 |
多线程处理(16 条线程) | 10倍 |
性能调优热点 | 1.7倍 |
总计 | ~50倍 |
Table 1
表 1 概述了英特尔至强 5560 处理器的改进之处。
- 通过实施大页面和重排数据访问,实现了 2 倍的加速。
- 将英特尔 C/C++ 编译器代替 GNU GCC* 又将性能提高了 20%。
- 数据并行线程处理扩展性良好,并借助配有 16条线程的英特尔至强处理器 X5560 (支持 SMT)实现了 10 倍的加速。
- 在热点实施额外编码变更再次实现了 1.7 倍的加速。
- 总体而言,大概实现了 50 倍的加速。
未来的性能优化
关于这一工作可用的数据集,我们注意到当线程的数量增加至 8-12 条以上,可扩展性就趋于平稳状态。通过检查每天线程完成的工作并将其与线程同步开销进行对比,我们顺利解释了这个问题。尽管使用了非常简单的自旋锁对线程进行同步,但每条线程完成的计算量却与线程的数量成比例地降低,而同步时间则以同样的比例增加。我们预计,同步开销将会在 20-28 条线程间超过计算时间,从而限制本解决方案对具有更多线程的系统的效用。对于这些未来的系统,或许数据和流程并行方法的组合将进一步提升性能。 #p#page_title#e#总结
虽然改善医疗图像质量的方法是众所周知,但这些方法一直有赖于计算机行业提供经济高效的计算能力。该工作证明,通过使用英特尔® 编译器、英特尔® Vtune™ 性能分析器及性能调优方法为英特尔硬件优化它们,我们在处理这些计算密集型方法方面取得了巨大的进步。我们认为,通过提供成本合理和有利于准确及时诊断的改进图像、改善对患者的护理及更有效地使用人员和设备资源,可为更优质的医疗保健服务创造条件