使用多核 CPU 趋近实时 C-arm 重建(2)

时间:2013-01-26   来源:   网友评论:0   人气: 364 作者: Hannes Hofmann


plot_simd_cache.png
图 3. 两个 Linux 系统在向量化、多线程和高速缓存优化后与使用英特尔编译器的单线程实施的速度提升对比。


图 3 的第一列显示 SIMD 优化的速度提升。在两个系统中,单线程向量化代码的速度均比标量代码快约 2.9 倍。由于上述问题,速度无法实现理论上最大的 4 倍提升。将多线程与向量化结合(列 2 和列 3),8 核和 24 核服务器分别实现了 29.5 倍和 43.5 倍的加速。如果只将这些数字与多线程进行比较,向量化取得的效果分别减少到 2.6 倍和 1.9 倍。这表明,在使用所有处理单元时,24 核服务器的内存带宽成为问题瓶颈。

高速缓存优化。高速缓存优化的思路是将数据保留在计算内核中,在对其进行多次运算后再存回主内存。对每个投影图像直接执行算法 1 将导致每次都需要读取和写入整个三维体。在 512^3 体素情形中,每个投影图像将生成 1GB 的数据传输。

为减少数据传输量,仅将少量体素加载到高速缓存,并从几个投影图像获得更新,然后再存回去。这样,数据传输可以整体减少到 1GB(仅体数据),大大减少了对内存带宽的需求。

图 3 的右列显示,高速缓存优化仅为 8 核服务器带来了微弱优势 (5%),此处少数处理器共享着充足的主内存带宽。另一方面,24 核服务器却从中明显受益,因为内存带宽是它的限制因素。

结论

我们证实了选择不同库和编译器对代码性能有着显著的影响。英特尔的 C 编译器和 OpenMP 实施比 GNU gcc 的速度提升了 20%。本文中讨论的重建问题可以通过增加内核得到很好地解决。但是,基于酷睿2的服务器却由于内存带宽限制而无法充分利用其 24 个CPU。优化高速缓存缓解了这一限制,使速度比单线程标量实施提升多至 58.57 倍。此外,在英特尔多核测试实验室 (Many Core Testing Lab) (http://software.intel.com/en-us/articles/intel-many-core-testing-lab/) 进行的实验表明,带有 32 个内核的基于 Nehalem 的服务器速度提升明显。本研究的更多详情将在 [3, 4] 给出。
 


 
上一篇:改变医疗行业的八个大数据应用

相关文章

文章评论


新闻排行榜

最新信息