没有合适的资源?快使用搜索试试~ 我知道了~
基于开放运算语言加速的数字全息卷积重建算法实现.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 78 浏览量
2023-02-23
20:07:57
上传
评论
收藏 569KB DOCX 举报
温馨提示
试读
13页
基于开放运算语言加速的数字全息卷积重建算法实现.docx
资源推荐
资源详情
资源评论
1. 引言
数字全息技术是采用光电传感器,如电荷耦合元件或互补金属氧化物半导体等代替传
统光学全息干板记录全息图,然后利用计算机数值模拟(即重建算法)再现光的衍射过程,
进而实现记录物体的重建。该成像技术操作简单、成本低廉、便携、成像效率高、成像视
野大,还包含物体 3 维结构信息
[1]
,在显微技术
[2]
、3 维形态观测
[3]
、生物医学成像
[4]
等诸
多领域都有巨大的应用潜力。
由于数字全息重建算法计算复杂度高,特别是数字全息图所包含的数据量随着光电传
感器分辨率不断提高而急剧增加,采用传统的中央处理器(Central Processing Unit, CPU)串
行计算整个全息重建极为耗时,已成为制约数字全息技术广泛应用的重要因素,尤其是在
要求高时效性的应用场景
[5,6]
。
针对相关需求,研究者提出了多种加速策略。比如马静等人
[7]
利用共享存储并行编程
对数字全息 3 维重构过程进行了提速,但由于多核 CPU 内存资源和功耗的限制,其加速效
果相比于经典单核计算模式并不显著。Chen 等人
[8]
利用现场可编程逻辑门阵列硬件架构实
现了一种低功耗的自动对焦数字全息重建算法,但由于该硬件技术开发周期长,设计成本
高,不利于推广。与此同时,拥有大量运算单元可支撑高效并行计算,兼具内存带宽大、
价格相对低廉等优势的图形处理单元(Graphics Processing Unit, GPU)飞速发展,在加速数字
全息重建方面受到广泛关注。例如刘海等人
[9]
针对粒子 3 维速度矢量场重建问题,提出基
于统一计算设备架构(Compute Unified Device Architecture, CUDA)的并行加速运算;Shin 等
人
[10]
借助 CUDA 加速了使用频域零填充的菲涅尔重建法; Doğar 等人
[11]
研究了 CUDA 架
构下实现 3 种重建算法以达到实时性重建的目的。然而 CUDA 架构仅适用于英伟达
(NVIDIA Corporation, NVIDIA)公司 GPU,无法实现跨平台部署。相比于 CUDA,由苹果
(Apple)、NVIDIA、英特尔(Intel)和超威半导体(Advanced Micro Devices, AMD)等多家公司
联合开发的技术架构—开放运算语言(Open Computing Language, OpenCL),属于一种通用
性计算框架,能向不同厂商的 GPU 计算设备提供支持,可运行在包括多核
CPU,GPU,FPGA 和数字信号处理器等在内的多种异构计算架构上,具有良好的跨平台特
性。
因此,本文提出一种基于 OpenCL 架构的跨平台异构加速策略,旨在实现基于 GPU
底层的卷积重建算法加速,以提高数字全息重建算法的执行效率和通用性。
2. OpenCL 简介
OpenCL 是一个在异构平台上编写并行程序的开放框架标准,通常抽象成平台、内
存、执行和编程等 4 个模型。其中,平台模型主要由 1 个主机和与之相连的 1 个或多个计
算设备组成。内存模型主要包括全局内存、常量内存、局部内存以及私有内存等 4 种类
型,其对应的大小和访问权限各不相同,且访问速度依次递增,其使用方式是否得当直接
决定程序性能的高低。执行模型主要由在主机上执行的主机端程序和在计算设备上执行的
内核程序组成。主机端程序可对多个支持 OpenCL 的计算设备进行统一调度管理,并且配
置并行程序的执行环境。内核程序主要负责算法的并行化设计过程。在创建内核程序时,
主机端会预先创建一个 N 维索引空间,索引空间中的每个工作项对应执行内核的实例,多
个工作项组成工作组。编程模型主要分为数据并行和任务并行两种类型。前者是将同一个
任务并发到各个数据元素上,通过工作组实现分层化的数据并行。后者是由设计者直接定
义和处理并行任务,并将多个并行任务映射到一个工作项来执行,从而在整体上起到加速
的效果。
3. 数字全息卷积重建算法的 OpenCL 设计与实现
3.1 卷积重建算法原理
本文选用在经典的全息重建算法中执行效率最低、最为复杂的卷积重建算法
[12]
,以便
更好地体现 GPU 技术的加速特性。根据瑞利-索末菲衍射积分公式,全息图经由重建光照
射后的衍射光波在再现面上的复振幅分布可表示为
[Math Processing Error]U(xi,yi)=1jλ∫−∞∞∫−∞∞C(x,y)H(x,y)
⋅
exp(jλρ)ρ2zidxdy
(1)
其中,[Math Processing Error]λ 是光的波长,[Math Processing Error]C(x,y)是在记录
面上假定的重建光的复振幅分布(表示为参考光的共轭),[Math Processing Error]H(x,y)是光
电传感器所记录的全息图光强分布,[Math Processing Error]zi 是再现距离,[Math
Processing Error]ρ 是记录面上任意一点与再现面上任意一点之间的距离,表示为
[Math Processing Error]ρ=zi2+(xi−x)2+(yi−y)2
(2)
根据参考光为平面光波或球面光波,重建光的光强分布可具体表示为
[Math Processing Error]C(x,y)={exp[−jk(xcosα+ycosβ)],
当参考光为平面光波时
exp[−jk(x2+y2)2z],
当参考光为球面
光波时
(3)
其中,[Math Processing Error]α 和[Math Processing Error]β 分别代表参考光与竖直、
水平方向之间的夹角,[Math Processing Error]z 是参考光源到记录面的距离。
进一步根据线性系统理论和傅里叶变换理论可得到复振幅分布的傅里叶表达形式为
[Math Processing Error]U(x,y,zi)=FT−1{FT[C(x,y)H(x,y)]
⋅
FT[g(x,y)]}
(4)
其中,[Math Processing Error]FT{}表示的是快速傅里叶正变换,[Math Processing
Error]FT−1{}表示的是快速傅里叶逆变换,[Math Processing Error]g(x,y)是在重建时于自由
空间中产生的脉冲响应,表示为
[Math Processing Error]g(x,y)=1jλexp(jkzi2+x2+y2)zi2+x2+y2
(5)
其中,[Math Processing Error]k=2π/λ。
3.2 卷积重建算法的异构加速设计
卷积重建算法的异构加速设计包括搭建异构加速平台和算法并行化实现两大部分。为
了更好地利用硬件资源,本文在设计异构加速策略时,从 CPU 和 GPU 的计算特性出发分
配各自的任务。计算量小且逻辑性复杂的任务,比如 OpenCL 平台的初始化、数字全息图
的预处理、归一化等过程,交给 CPU 端串行处理。而计算量大且逻辑相对简单的卷积重建
任务,交给 GPU 端并行处理。
据此设计的重建加速算法的实现流程如图 1 所示。由图可知,在 GPU 端并行计算的
重建算法从内部分解为[Math Processing Error]g(x,y)初始化、2 维傅里叶正变换、2 维傅里
叶逆变换、点乘、零频点移到频谱中心、取模等多个步骤。这些步骤顺序执行,适合采用
数据并行编程模型,通过合理分配工作组的方式实现异构加速计算。并且整个过程只包含
两次数据传输,1 次传入全息图和所需参数,另一次传出重建结果,计算的中间结果始终
存储于 GPU 端,可有效避免因多次数据交换导致的计算性能瓶颈。整个并行处理过程的
GPU 内部实现如图 2 所示,分为 FFT 的并行化和算法其他部分的并行化两部分。
剩余12页未读,继续阅读
资源评论
罗伯特之技术屋
- 粉丝: 3578
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功