基于OpenCL-To-FPGA的CT图像重建反投影加速方法

文档序号:6620810阅读:367来源:国知局
基于OpenCL-To-FPGA的CT图像重建反投影加速方法
【专利摘要】本发明公开了一种基于OpenCL-To-FPGA的CT图像重建反投影加速方法,主要利用FPGA实现了CT图像重建反投影步骤的加速,具体为:在OpenCL编程模型中,构建CPU和FPGA协作的CPU-FPGA异构计算模式,CPU和FPGA间通过PCI-E总线进行通信,CPU作为主机端,负责算法中的串行任务以及对FPGA的配置与控制任务;FPGA作为协处理器端,通过加载OpenCL内核程序以实现对反投影计算的并行流水加速。在编程模式中,FPGA执行程序全部采用类C/C++风格的OpenCL语言开发,开发简便,修改灵活,能大大缩短研发周期,减少产品维护和升级的研发成本;另一方面,新方法基于OpenCL框架,代码可以实现跨平台快速移植,适合扩展和应用于多处理器异构平台的协同加速之中。
【专利说明】基于OpenCL-To-FPGA的CT图像重建反投影加速方法

【技术领域】
[0001] 本发明涉及一种CT图像重建的方法,特别是涉及一种基于OpenCL-To-FPGA的CT 图像重建过程中反投影加速方法。

【背景技术】
[0002] 计算机断层成像(Computed Tomography, CT)以其无损、精确、三维可视化等优点 在工业无损检测和医疗诊断领域获得了广泛的应用。然而CT设备在提高成像质量和重建 分辨率的同时,相应需求的计算资源和存储资源都非常大,重建速度已成为CT技术走向实 用的一个瓶颈,如何对CT重建过程加速是目前该领域研究的一个难点问题。
[0003]目前,实际CT系统中应用的主流算法主要集中于以滤波反投影为基础的解析类 重建算法上,如FBP、FDK等算法。在这类算法中,反投影过程所占计算消耗的比例最高,对 反投影计算的加速是实际应用中重建加速的关键点。
[0004] 随着现代电子技术的高速发展,处理器的运算速度越来越快,因此近年来对CT重 建加速的研究主要集中于基于GPU、FPGA等硬件加速方法上。FPGA拥有丰富的逻辑资源、 算法模块和嵌入式硬核模块,以全数据流的形式进行处理,使用硬件以空间上全面积并行 的方法提升算法速度,适合用来进行图像重建,利用FPGA实现对CT重建的反投影过程进行 加速是该领域的重要研究方向。
[0005] 经过现有技术的文献检索发现,利用FPGA加速CT重建反投影的文章采取的实现 方式存在开发周期长、难以跨平台快速移植、不适于多处理器异构平台协同加速等不足。 2008 年,Markus Kowarschik 等在 Proceedings of the 9th International Meeting on Fully Three-Dimensional Image Reconstruction in Radiology and Nuclear Medicine 上发表文章《High-Speed Reconstruction for C-Arm Computed Tomography》,用 9 块 FPGA协调工作完成了 CT重建中三维反投影部分的加速,但他采用的开发方式是基于传统 的VHDL/Verilog硬件编程语言,开发复杂度大,研发周期长,且研发程序只能在FPGA上使 用,无法移植到其它处理器上。
[0006] 2009 年,Xu 在其学位论文《An FPGA Hardware Solution for Accelerating Tomographic Reconstruction》中提出采用Impulse C语言在FPGA上实现了 CT重建的FBP 算法,对FBP算法中的二维反投影过程进行了 FPGA加速,Impulse C语言采用类C的编程 模式,研发速度和修改灵活性强于传统的开发方式,但Impulse C仅仅是面向FPGA编程研 发,依旧存在移植困难,不适于多处理器异构平台协同加速等缺点。
[0007] OpenCL编程框架简介:0penCL全称为Open Computing Language,即开放式计算 语言,最早于2008年由Apple公司提出,是一个开放的免版税标准。OpenCL可以实现混合处 理器的并行计算,它所支持的异构处理器包括0?比6?比05?、&11/8』· processor等,可以 实现可移植的并行加速代码,它为通用计算领域提供了一个跨平台的统一标准语言。2011 年,Altera公司发布了 FPGA的OpenCL标准开发计划,并于2013年推出了其基于OpenCL框 架的FPGA产品,将跨平台并行编程标准OpenCL扩展到了 FPGA。


【发明内容】

[0008] 本发明的发明目的是:提供一种基于OpenCL-To-FPGA的CT图像重建过程中反投 影加速方法。
[0009] 本发明的技术方案是:基于OpenCL-To-FPGA的CT图像重建过程中反投影加速方 法,包括如下步骤: 步骤A :在OpenCL编程框架下,构建CPU和FPGA协作的CPU-FPGA异构平台模型; 步骤B :CPU主机端构建OpenCL主机程序,并执行投影数据预处理操作; 步骤C :处理后的投影数据通过PCI-E总线传输至FPGA协处理器,并存储至全局存储 器中; 步骤D :CPU主机端对FPGA的内核进行配置,FPGA作为协处理器端,通过加载OpenCL 内核程序以实现对反投影计算的并行流水加速; 步骤E :反投影后的重建数据通过PCI-E总线传输至CPU主机端。
[0010] 进一步地,步骤D中FPGA作为协处理器端,实现对反投影计算进的并行流水加速 的具体步骤为: 步骤D1 :根据反投影算子的算法思想和OpenCL编程框架模型设计相应的OpenCL设备 核程序(.CL程序); 步骤D2 :利用Altera Altera SDK for OpenCL (A0CL)工具对核程序进行编译,生成 相应的FPGA工程; 步骤D3 :利用Quartus工具对生成的FPGA工程编译,生成FPGA配置文件; 步骤D4 :CPU主机端设计并编写相应的主机程序,设计数据传输流程和FPGA设备的控 制流程; 步骤D5 :将FPGA配置文件下载到对应的FPGA协处理器设备中,同时主机端协同执行 主机程序。
[0011] 进一步地,步骤D中采用了分区访问的全局存储器访问优化方法,将全局存储器 分割为多块bank,不同角度的投影数据分配到不同的bank上。
[0012] 本发明的有益效果是:本发明在编程模式中,FPGA执行程序全部采用类C/C++风 格的OpenCL语言开发,较传统的Verilog或VHDL等底层硬件描述语言,本方法开发简便, 修改灵活,能大大缩短研发周期,减少产品维护和升级的研发成本;另一方面,新方法基于 OpenCL框架,代码可以实现跨平台快速移植,适合扩展和应用于多处理器异构平台的协同 加速之中。

【专利附图】

【附图说明】
[0013] 下面结合附图对本发明的【具体实施方式】作进一步的详细说明 图1为本发明的异构平台模型整体框架; 图2为本发明中反投影算子加速流程图; 图3为本发明中加速反投影重建结果图。

【具体实施方式】
[0014] 本方法构建的异构平台模型如图1所示,其中CPU为主机端,通过PCI-E总线和一 个或多个协处理器设备(FPGA板卡)连接。根据CT图像重建算法的任务分配,编程模型可 以分为两部分,一部分是在CPU上执行的主程序,另一部分是在FPGA上执行的核函数。每 个协处理器设备由多个处理单元组成,各种计算操作都是在处理单元中完成的,协处理器 设备上的存储单元分为3种,分别为全局存储器、常数存储器和局部存储器。主机端管理着 整个平台上的所有计算资源,主程序通过定义上下文并管理内核程序在FPGA上的执行,应 用程序会从主机端向各个协处理器设备的处理单元发送计算命令,在一个计算单元内的所 有处理单元会执行完全相同的一套指令流程。
[0015] 整个平台对于CT图像重建算法的执行过程如下:(1) CPU主机端执行投影数据预 处理操作;(2)处理后的投影数据通过PCI-E总线传输至FPGA协处理器,并存储至全局存 储器中;(3) CPU主机端对FPGA的内核进行配置,FPGA协处理器端通过多处理单元并行流 水执行反投影计算;(4)反投影后的重建数据通过PCI-E总线传输至CPU主机端。
[0016] 对CPU主机端的编程采用标准C/C++语言,对FPGA协处理器的编程采用基于 OpenCL规范的描述语言。OpenCL标准规范的编程语言的抽象等级远高于VHDL和Verilog 等硬件描述语言。传统的编程方式需要对FPGA底层硬件单元按照时序周期进行编程描述, 对于复杂的算法执行,需要设计状态机控制数据通路,同时需要处理各级接口约束和时序 同步问题,编程难度大、耗时长,且程序维护和升级复杂,非常不利于实际产品的快速应用。 而采用OpenCL编程方式,无需关注底层时序级的硬件设计,可根据反投影算法设计高级语 言描述的类C代码,OpenCL编译器则可自动实现由OpenCL代码转化为硬件描述语言和执 行程序的步骤。
[0017] 对于CT重建的反投影算法并行加速实现,采用OpenCL-To-FPGA方式的开发流程 如图2所示,具体描述如下:(1)根据反投影算子的算法思想和OpenCL编程框架模型设计 相应的 OpenCL 设备核程序(· CL 程序);(2)利用 Altera Altera SDK for OpenCL (A0CL) 工具对核程序进行编译,生成相应的FPGA工程;(3)利用Quartus工具对生成的FPGA工程 编译,生成FPGA配置文件;(4) CPU主机端设计并编写相应的主机程序,设计数据传输流程 和FPGA设备的控制流程;(5)将FPGA配置文件下载到对应的FPGA协处理器设备中,同时 主机端协同执行主机程序。
[0018] 在反投影算子的OpenCL核函数设计中,采用2维线程进行并行设计。反投影过程 采用体素驱动,各体素点间的计算是无关的,因此线程也按照体素点进行并行分配。同时, 考虑z方向的相关性,为了减少重复计算量,z方向索引单独分配一个线程维度;而χ-y面 内的索引分配另一个线程维度。
[0019] 为了实现加速性能的最优,综合考虑FPGA的硬件特点和反投影算子的计算流程, 本设计主要采用了以下优化技术:(1)基于分区访问的全局存储器访问优化:将全局存储 器分割为多块bank,不同角度的投影数据分配到不同的bank上,以实现负载的访问平衡, 从而提升全局存储器的访问带宽;(2)利用常数存储器存储运算过程中需要多次重复计算 的中间变量,节省计算资源;(3)优化内核函数中一次反投影的张数,提升对投影数据存储 的访问带宽,同时减少对重建数据存储的访问,通过调整以达到对全局存储器访问的最优。
[0020] 采用本方法在实际硬件设备上进行实现,使用的CPU为Intel ?7 3770 CPU 3. 40GHz,使用的FPGA协处理器设备为Altera公司的DE4-230开发板,OpenCL编译工具为 Altera Beta OpenCL Development Kit (ACL) vO. 9 版,FPGA 编译工具为 Quartus 12.0。 受DE4-230板卡外部存储器的带宽限制,对实际性能评测,优化3中核函数中一次反投影的 张数定为2时最佳。重建体模采用标准Sheep-Logan体模,CT图像重建结果如图3所示, 在DE4-230上执行反投影加速的测试结果如下表所示:

【权利要求】
1.基于OpenCL-To-FPGA的CT图像重建过程中反投影加速方法,其特征在于包括如下 步骤: 步骤A :在OpenCL编程框架下,构建CPU和FPGA协作的CPU-FPGA异构平台模型; 步骤B :CPU主机端构建OpenCL主机程序,并执行投影数据预处理操作; 步骤C :处理后的投影数据通过PCI-E总线传输至FPGA协处理器,并存储至全局存储 器中; 步骤D :CPU主机端对FPGA的内核进行配置,FPGA作为协处理器端,通过加载OpenCL 内核程序以实现对反投影计算的并行流水加速; 步骤E :反投影后的重建数据通过PCI-E总线传输至CPU主机端。
2.根据权利要求1所述的基于OpenCL-To-FPGA的CT图像重建过程中反投影加速方 法,其特征在于:步骤D中FPGA作为协处理器端,实现对反投影计算的并行流水加速的具体 步骤为: 步骤D1 :根据反投影算子的算法思想和OpenCL编程框架模型设计相应的OpenCL设备 核程序(.CL程序); 步骤D2 :利用Altera Altera SDK for OpenCL (AOCL)工具对核程序进行编译,生成 相应的FPGA工程; 步骤D3 :利用Quartus工具对生成的FPGA工程编译,生成FPGA配置文件; 步骤D4 :CPU主机端设计并编写相应的主机程序,设计数据传输流程和FPGA设备的控 制流程; 步骤D5 :将FPGA配置文件下载到对应的FPGA协处理器设备中,同时主机端协同执行 主机程序。
3.根据权利要求1所述的基于OpenCL-To-FPGA的CT图像重建过程中反投影加速方 法,其特征在于:步骤D中采用了分区访问的全局存储器访问优化方法,将全局存储器分割 为多块bank,不同角度的投影数据分配到不同的bank上。
【文档编号】G06F9/45GK104142845SQ201410347123
【公开日】2014年11月12日 申请日期:2014年7月21日 优先权日:2014年7月21日
【发明者】李磊, 张瀚铭, 蔡爱龙, 闫镔, 李汉宁, 席晓琦, 王林元, 王彪 申请人:中国人民解放军信息工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1