基于GPU并行计算实现快速显微CT重构

2011-03-21 07:13:02陈荣昌肖体乔
核技术 2011年6期

沈 飞 陈荣昌 肖体乔

1 (中国科学院上海应用物理研究所 上海 201800)

2 (中国科学院研究生院 北京 100049)

近些年来,三维CT在医学和工业领域得到广泛应用。随着探测器分辨率的改进,CT投影图像采样分辨率也不断提高,对高质量输出容积体期望值的不断提升,使存储容量和数据的处理量越来越大,严重影响CT重建速度。目前,上海光源成像线站采用串行的 CT重建程序并通过 CPU完成计算,计算数据容积为2 048×2 048×1 500,就需40多小时,迫切需要进行CT重建的加速。

图像处理器(GPU, graphics processing unit)是高度并行化的流式处理器,并行计算能力强,运算速度快,在通用计算(GPGPU)领域有极大优势。文献[1]利用 GPU 实现 FDK 算法(The algorithm of Feldkamp, Davis and Kress)的加速,最高可达15倍左右的加速比。Scherl[2]利用 CUDA在 NVDIA Geforce8800实现了FDK算法,取得5倍左右的加速比。

使用FDK算法和迭代算法进行CT重建的GPU加速研究,已取得较佳效果[3−5]。而基于滤波反投影算法的GPU加速的研究并不多见,该法的主要优点是重建速度快。本文采用滤波反投影(FBP)算法实现CT重建,由于反投影时每个位置的像素值重建相互独立,可同时进行重建计算,故可将其并行化设计。

1 GPU并行化实现CT重建

1.1 CUDA编程模型

CUDA编程模型[6]将CPU作为主机(Host),GPU作为协处理器(co-processor)或设备(Device)。一个系统中可存在一个主机和若干个设备,采用单指令、多线程执行模式(SIMT)。

模型中CPU和GPU协同工作,各司其职。CPU负责进行逻辑性强的事务处理和串行计算,GPU则专注于执行高度线程化的并行处理任务。CPU和GPU各自拥有相互独立的存储器地址空间:主机端的内存和设备端的显存。

一旦确定了程序中的并行部分,即可考虑把这部分计算工作交给GPU。……

登录APP查看全文