并行设计

关键词: 视频

并行设计(精选十篇)

并行设计 篇1

在过去计算机并行处理技术发展缓慢, 主要原因是计算机电子设备处理器价格比较贵, 网络通信处于前期发展阶段不太成熟, 使用并行技术开发的软件功能和应用上不完善。在20 世纪后期, 随着网络通信技术的迅速发展, 高位数处理器的开发和应用, 给并行处理技术提供了很好的发展空间。在计算机产业中, 人们意识到计算机的处理计算的能力在高科技的技术发展中被人们越来越重视, 并行处理技术是高性能计算机处理技术未来主要技术, 并行处理技术可以大大提高计算机的整体性能。 现代科学技术和全球经济的发展都离不开计算机技术, 计算机技术已经改变了人们的生活方式, 存在各个领域, 计算机技术的发展比其他科学技术的发展要快, 对人类的影响比较深远。 工程领域对计算机计算的需求是无限的, 然而计算机的单机计算是有限的, 这两个关系决定了分布式并行计算方法必然称为计算机计算方法的主导。

2 研究现状

国内在国防和国家科技的建设上, 并行处理技术起着重要作用, 我国对高性能计算机的发展非常重视, 尤其在石油、气象、 航空等大范围领域的研究逐年增加, 我国在并行处理技术领域比其他领域发展显著主要是因为并行处理技术领域的高性能计算机。 国内的科技工作者正努力研究多种并行处理的计算方法, 软件发展的重心主要体现在算法能力上面, 我国研发的数据库并行处理系统处于世界同领域的领先地位, 并行体系结构、 并行系统软件、 并行算法是并行处理技术的3个方面, 我国在高性能计算机的研制方面投入多, 在系统开发方面投入较少, 低成本延迟高带宽、 并行应用软件和并行算法是我国研发的重点。

国外美国、 日本在并行计算方面发展出力领先水平, 美国在商业领域已经应用高性能计算, 并行检索技术, 在并行计算方面的研究资料国外设计的也比较全。 国内外差距大, 我国发展高性能计算机技术不能再等, 算法是研究的重要内容。

3 并行计算机分类和计算环境

3.1 并行计算机的分类

并行算法能够运行的基础主要是并行计算环境和并行计算机, 并行算法的设计和实现取决并行计算机环境和并行计算机, 并行计算机从最初的向量机, 如今并行计算机主要是机群系统, 并行计算机分为SIMD型并行计算机、 共享存储MIMD并行机、 分布式存储MIMD并行机、 分布共享存储MIDI。

SIMD型并行计算机是单指令流多数据流并行机, 在指令流执行的时候, 处理机对多组数据执行相同指令流, 也就是说SIMD并行机无论怎样运行它的指令只有一条, 同步性、 确定性是SIMD型并行计算机的特征, SIMD型并行机已经不能满足并行技术的发展, 是早期产品, 如今已经不被使用。

共享存储MIMD并行机是多指令流多数据, 所有处理机执行统一程序, MIMD并行机是现在并行算法中普遍使用的编码方式。

分布式存储MIMD并行多处理机解决了共享存储MIMD并行处理机的瓶颈问题, 在整个系统中, 每个节点都有自己的存储器, 在访问的时候只能自己访问自己的存储器, 不能互相访问, 各个节点通过网络作为传输介质连接到一起, 分布式存储扩展性强, 但是编程复杂, 在节点之间的信息传递不是通明的, 分不知存储MIDI并行处理机分两类, 大规模处理机和群集系统。

分布共享存储MIDI并行机在系统中每个处理机有自己的存储器, 共享地址空间由各个局部存储器连接组成。

3.2 并行计算机的计算环境

并行计算机体系结构, 并行算法的效率直接受并行计算机体系结构的影响, 在这个系统中处理机的连接方式构成并行计算机体系结构。 并行处理机互连方式主要是网络直径和等份宽度两个重要因素。 网络系统中两个距离较远的处理机之间的具体构成网络直径, 两个距离远的处理机在消息传递的时候出现时间的延迟用网络直径这个参数来衡量。 等份宽度是网络系统中两个相等距离所去掉的网络边的条数。 判断并行体系结构性能重要原则是小的网络直径和大的等份宽度。集群系统中处理机的连接方式用总线结构表示, 在总线结构中, 各处理机连接在一个总线上面, 靠一个总线进行传输, 在消息进行传输时要判断先后顺序, 总线结构图如图1 所示。

并行计算机的软件环境包括编码语言、 操作系统、 计算环境3 部分, 用于消息传递的并行环境常用的是PVM和MPI。PVM并行计算环境叫做并行虚拟机系统, 系统规模小通用性强, 在TCP/IP协议环境下也适用, PVM特点支持多用户同时执行多个应用程序, 提供通信原语, 多个进程组成一个进程组, 同一个进程可以属于多个进程组, 在不同的网络系统中可以使用, 兼容性强, 容错功能强。 MPI并行计算环境是消息传递界面的一种方式, MPI并行计算环境特点实现的开发工具方式多, 消息的发送和接收可以重叠, 对消息缓存区可以有效管理, 可靠地运行在集群系统中, 保证其他软件可以正常运行, 标准平台上也可以使用。

4 并行算法定义及分类

算法是解决某个特定类型问题的解题方法的一系列规则, 并行算法是在解决问题方面相互联系起协调作用的可以并行执行的过程的集合。 并行算法是在并行处理机上把多个问题和任务映射到多处理机进行求解的处理数据的一种方法。 传统的算法树是一维问题的串行算法, 靠算增加算法树的深度来进行大型计算机计算, 并行算法减少时间上的复杂性, 计算量增加, 算法步骤减少, 把时间上的复杂性转化为空间上的复杂性。

并行算法分类, 并行算法根据运算对象不同分为数值并行算法和非数值并行算法两类, 数值并行算法有线性方程组和多项式求解等, 非数值并行算法指排序、 选择、 分类等设计。 并行进程执行顺序不同分为同步并行算法、 异步并行算法、 独立并行算法, 同步并行算法指进程执行要等待其他进程的计算方法, 异步并行算法指进程在执行的时候彼此不用相互等待, 独立并行算法指进程在执行的时候是独立执行的。

5 并行算法设计

用并行处理机系统进行并行计算求解问题一般遵守需要解决的问题本身提出满足需要的特定的并行算法, 或者在相似的问题上把已有的并行算法改变下, 来解决问题原则。 常用的并行算法技术有流水线技术、 分治策略和加速级连策略等。

流水线技术是重要的并行计算技术, 在VLSI并行算法中, 基本设计是把一个任务设置为A, 然后分成几个小的子任务A1、 A2、 …AN, 在执行的时候按顺序执行, 先执行A1再执行后面子任务, 计算速度是一样的。

分治策略就是把问题分解多个特征相同的子问题, 计算机单个结点平均分摊计算机的负载提高工作效率, 子问题的类型和原问题的类型一样, 采用分而治之的原则。

加速级连策略是采用最优算法来解决问题, 开始使用最优算法, 当任务规模缩小到一个值的时候, 使用最快非最优的方式接续完成任务解决问题, 使用最优串行算法并发解决子问题。

并行计算模型把并行机的基本抽象特征表现出来, 从计算模型中可以看出来并行计算模型、 并行算法设计、 并行机三者关系, 并行算法映射到并行机上, 基于并行机进行算法的设计。 计算机模型为并行算法提供了框架和物理基础, 使用多种并行机。 并行计算模型如图2 所示。

并行算法评价标准是加速比和效率, 并行算法在并行机上求解实际问题,

并行算法的加速比

TA串行算法在单处理机上最优运行时间

TB并行算法使用B台处理机的计算时间

并行算法的效率定义

B为处理机台数

在处理台数规模不变的特定情况下并行算法加速比SB和处理机台数B成正比, 也叫算法线性加速比, 如果SB比B多, 那么该算法是超线性加速比。

设计高性能计算机并行算法要充分考虑到并行算法的扩展性, 这也是再设计并行算法结构时要充分考虑到的问题, 扩展性有3 种分别是资源扩展、 技术扩展和应用扩展, 扩展性主要是并行算法在对处理机数目的有效利用的一个度量, 并不是算法内在的通信和并行性需求。

加速比、 效率和扩展性是评价并行算法性能的3 个指标, 加速比是最优串行算法运行时间和B太处理机并行运行时间的比值, 效率是加速比与B的比值, 我们在设计并行算法的时候要充分考虑到加速比、 效率和扩展性3 个指标。

6 结语

从理论和设计方法两方面对分布式并行算法进行了简单的描述, 随着计算机技术的发展, 人们对计算机的数据处理性能有很高的要求, 最初的计算机处理能力已经不能满足计算机领域的发展, 并行处理技术可以提高计算机大数据的并行处理性能, 从国内外并行算法的应用上分析出我国对并行处理能力要加大投入, 才能追上技术领先国家。 分布式并行算法提高计算机的数据处理能力, 在计算机技术领域发挥着重要的作用。 并行处理技术分硬件技术和软件技术, 目前硬件方面有很大的提高, 但是在软件方面还存在问题需要解决, 算法是软件的核心, 要推动并行处理技术的发展, 必须要先重点研究并行算法。

摘要:计算机计算方法从单机技术发展到多机并行技术, 这是计算机计算模式适应未来科技发展的趋势, 国家的科技发展需要并行处理技术的推动, 并行处理技术能快速地发展, 源动力来自于人们对工程计算机能力的需求。在这几年, 并行处理技术得到很大的推动与发展, 并行算法处理技术的应用提高了计算机大数据处理的能力。介绍并行算法应用情况的背景和研究现状, 阐述了并行算法技术的分类及设计方法。

关键词:分布式,并行算法,计算机计算方法

参考文献

[1]许林.群智能算法可并行性分析及其FPGA实现[J].journal6, 2010, 46 (33) :54-57.

支持并行设计决策的成本信息研究 篇2

支持并行设计决策的成本信息研究

对支持并行设计决策的成本信息按产品生命周期和构成成本要素进行分析,并结合并行设计的特征分析了并行设计的`每个阶段对成本信息的需求,为建立成本数据库提供了基础信息.

作 者:颜见雄 同淑荣 付佐尧 作者单位:西北工业大学管理学院刊 名:航空制造技术 ISTIC英文刊名:AERONAUTICAL MANUFACTURING TECHNOLOGY年,卷(期):“”(9)分类号:V2关键词:成本信息 产品生命周期 并行设计

包装设计 创新与环保并行 篇3

的家庭主妇,由于精美包装设计的吸引,所购物品通常超过她们出门时打算购买数量的45%。”可见,

商品包装设计的好坏直接撞击着消费者购买与否的心理天平。放眼国外市场,包装设计普遍向着绿色环

保和功能创新的方向发展,相比之下,我国包装设计始终徘徊于“重平面、轻结构、轻材料”的局面。那么,当前我国包装设计领域究竟存在哪些问题与不足?如何才能早日实现与国际水平接轨?这正是本期行业观察关注的话题。

放眼国际 取其精华

关于包装设计, 曾经有这样一个形象的比喻:纽带。的确,它就像一根纽带,连接了包装企业和终端用户这两端,并嵌入到包装产业链的不同环节中,从包装材料的选择到包装结构的设计,从包装产品的加工到印刷工艺的创新,甚至到运输、营销过程,无一不涵盖包装设计这一元素。

包装设计的前沿理念在国外,这是无可争辩的现实。放眼国际市场,一些典型的商品包装不仅可以反映出当前包装设计的创新理念,还可以反映出当前包装设计的发展趋势。下面结合零星的几个案例进行详细阐述,我们可以从中体会国外在包装设计领域的深厚积淀和不懈探索。

1.注重功能创新

国外一些优秀包装设计的创新点大多来自对功能的创新,设计师们根据审美特点,科学地对包装结构进行再设计,并将包装功能作为创新点延伸到包装设计中。例如,图1为英国Sainsbury's果汁公司的一款1L装果汁包装,其独特的功能创新是利用4个简单的透明视窗将果汁分成了5份,可以使消费者快速、方便地查看果汁的剩余量,便于其严格控制一天的饮用次数和饮用量。图2所示的是美国亨氏为满足消费者不同消费习惯推出的一款可“蘸”、“挤”两用的番茄酱包装。通过这种创新设计,当撕开托盘表面的薄膜盖材后,消费者即可“蘸”到番茄酱;如果消费者想把番茄酱“挤”出食用,这款包装在顶端设计了一个易撕口,只需极小的力即可撕开包装挤出番茄酱。

国外在功能创新方面的包装设计案例不胜枚举,而且其设计的宗旨都是为了吸引消费者眼球、方便消费者使用。

2.符合绿色环保

毋庸置疑,绿色环保已是各行各业的发展主流,包装设计也不例外。国外的包装设计始终贴合这一主题,设计出很多符合绿色环保要求的包装,主要体现在减少包装材料消耗、包装材料的回收及循环使用、包装材料的可降解性等方面。例如,图1中的案例,除了功能创新外,还进行了减量化设计,相对于同类产品以往的包装,其节省了大约30%的包装材料。图3为Steve's Real宠物食品公司打造的一款宠物食品包装,该包装袋由可再生材料(如玉米和植物淀粉)制成,而且,Zip-Pak按压密封装置同样采用的是可降解材料,完全符合可持续发展的要求。

另外,日本的包装设计比较注重循环利用,其90%的牛奶和饮料均采用折叠纸盒包装出售。当消费者将饮品饮用完之后,可将容器压扁,这样能够减少占用空间,方便送往工厂进行再循环加工,并减少运输成本。

通过以上案例可以看出,国外的包装设计比较注重功能差异性、方便消费者使用性及环保性等综合因素,换言之,将包装业的发展潮流,即“品牌战略”、“绿色包装”、“技术创新”、“消费者权益”等,完美地融合到了包装设计的理念中。因此,为贴合国际包装设计的创新与环保理念,我国也应加快包装设计的创新脚步,紧追国际步伐。

聚焦国内 分析现状

近年来,我国对包装设计的关注度持续升高,“绿色包装”、“创新包装”、“整体包装解决方案”等都是关注热点,这也使得包装设计以独特的优势或能力,成为各大企业比拼的砝码。然而,我国包装企业对包装设计理念以及包装设计流程的理解,还存在一些问题与不足,具体表现在以下几个方面。

1.不重视设计输入,缺乏创新性

当前,仍有一部分企业认为包装就是为产品加一个简单的“外套”,并没有考虑将包装设计升级到企业的发展战略上,更加不注重包装设计的输入环节,导致我国包装设计基本上处于“克隆”阶段,缺乏创新性。如“光明”变为“先明”、“青岛”变为“青鸟”等,这些品牌的模仿可谓惟妙惟肖,甚至在结构造型方面也难辨真假,导致消费者误购,甚至感觉“上当”一般,因此,这样很难建立品牌的持久性。另外,在超级市场,这些包装上的模仿、抄袭设计随处可见,比如洗涤用品包装,只要有一个创新包装的诞生,其他品牌就纷纷推出类似的包装。HCP Packaging品质部经理陈鹰指出:“这种模仿设计会导致产品生命周期短,市场占有时间短,因此不得不再去研发设计新包装,这无形中增加了包装成本。”如何突破包装设计上的模仿与抄袭行为,以实现超越发展,是我国包装设计行业亟待解决的问题。某日化企业包装结构设计师表示:“与国外相比,我国在包装设计研发投入上花的精力还很少,还需要在设计输入方面有待加强,深入了解消费者的喜好,以便符合消费者的购买心理。”

2. 企业间沟通不足

从我国当前包装企业的发展形势来看,包装企业在包装设计环节的“缺位”现象还十分明显,这与当前包装设计的操作方式有着必然的联系。目前一些大型的终端用户都拥有自己的设计团队,他们提供包装设计图纸,然后交由包装企业加工生产,而大多数包装企业只是循规蹈矩地将终端用户的设计图纸“转变”为实实在在的包装产品,这在一定程度上限制了包装设计应有的发展空间。

这其中不可忽视的的原因之一是,包装企业与终端用户之间沟通不足。采访中我们了解到,一些终端用户其实是希望包装企业能够为其提供设计建议和方案的,因为包装企业可以接触到更多的客户,设计思路更广,而且包装企业对新材料的发展及包装产品的制造工艺更了解,这样能使设计环节与制造环节更加匹配。而一些包装企业也纷纷表示,他们更愿意为终端用户提供包装设计方案,而并不只是简单的“来料加工商”,但是他们在推广包装设计方案时,总会遇到一些阻碍。济丰包装(上海)有限公司(以下简称“上海济丰”)包装技术经理黄昌海指出,有些客户只关心包装方案的保护性能,如果为其提供一些新的包装结构设计,客户觉得会承担一定的风险性,因此干脆不采纳。

3.高素质设计人才短缺

高素质设计人才短缺,这是我国包装设计发展缓慢的一个重要原因,也是目前存在的一大问题。据了解,目前我国包装企业中的一些包装设计师是美术专业出身,其较为注重包装装潢的精美度,但缺少包装结构、包装材料等方面的专业知识,这样就造成了我国包装设计当前徘徊于“重平面、轻结构、轻材料”的局面,并长期以来难以突破。

如果商品的包装设计仅以纯粹艺术的角度去考量,反而达不到促进销售的作用。其实,一个优秀的包装设计应该是外观与功能兼备的,其中功能主要体现在新结构的设计、新材料的运用和新技术的注入中。因此,要想呈现一个完美的包装,还需要在结构、材料方面下足“功夫”。因此,对于包装设计师的要求不能只停留在简单的“设计员”、“排版员”、“绘图员”等小角色上。黄昌海指出,包装企业要求包装设计师必须在横向上有扎实的基础,纵向上又有专长和擅长,即走“T”字路线;而其对一个资深设计师要求更高,除了要具备上述能力外,还需要延伸其知识范围,要求阅历丰富、视野广阔,而且还要具有创意的想法,改走“π”字路线,如要求包装设计人员不仅要精通表面装潢设计,对包装结构、包装材料、加工工艺也要有所擅长,这种能力才是包装企业所追求的,然而,当前这种设计人才在我国包装企业中仍有缺失。

4.过度包装严重

目前,企业为了追求利润最大化,往往对产品进行“过度包装”和“奢华包装”。从价值构成方面讲,过度包装的成本甚至远远超过内装物的生产成本,具体表现在:包装层数过多、包装体积过大、采用的缓冲衬垫材料过保护;很多礼品盒的包装材料采用木质、金属材料,这大大增加了包装成本;表面装潢设计富丽堂皇,大量使用不必要的装饰,进行多色印刷、烫金效果等。如月饼包装,4块普普通通的小月饼配上工艺精美的礼品盒,销售价格就能达到“天价”。另外,过度包装也带来了极大的资源浪费,更不利于环保。采访中,大多包装企业表示,其实在包装设计环节,包装企业基本处于被动地位,他们往往迫于社会需求的压力,从另一个层面上讲这也强化了我国包装设计的局

限性。

5.国产包装加工设备落后

“如果没有与之配套的包装加工设备,再好的包装设计也没有办法实现。”陈鹰道出的这句话,发人深思。在我国几家大型包装企业中,采用国产包装加工设备的可谓寥寥无几。陈鹰还指出,“由于国产设备精度较低、稳定性较差,生产出来的包装达不到设计初衷的效果,这就失去了包装设计原有的意义。”目前,我国一些包装企业仍依靠从国外引进先进的包装加工设备来满足生产需求,这就促使了我国包装企业对国外生产设备的长期依赖性,也致使一些国产包装加工设备只能退居二线或成为附属配套品。

对症下药 展望未来

可见,我国包装设计仍处在探索阶段,问题重重,我们应以包装设计现状为着眼点和支撑点,去积极探索未来的发展方向,首当其冲就是要针对以上问题与不足对症下药。

1.明确设计定位,进行创新

包装向来被誉为“ 无声的推销员”,那些能刺激消费者购买欲望的商品包装,从表面上看好像是艺术设计的成功,但其本质是设计师对消费者需求的准确把握。包装正在逐渐向实用性的方向发展,同时被赋予了多重使命,如包装装潢色彩鲜明、图形效果具有视觉冲击力、包装结构创新、包装材料合理,以及满足消费者购买心理需求等,这就需要包装设计师在进行包装设计之前,明确设计的定位与目标,对客户需求、市场状况、消费潮流等做详细的市场调研与考证。

采访中我们了解到,当前我国包装企业与终端用户均对设计定位、输入环节逐渐重视起来,例如某受访企业,其设计定位环节专门由市场部来完成,然后将设计输入想法反馈给设计部,设计部执行完成后再由市场部来验收。还有部分包装企业成立了专门的部门,来研究消费者的消费习惯与购买动机,其实这些都是为了使产品包装设计更好地贴近消费者需求,以达到促销目的。

拉芳集团设计总监陈贤鹰表示,“在包装设计过程中,正确定位很关键,一个成功的包装设计就是最终要达到消费者购买的目的,这也是包装设计的意义所在。”一些终端用户也通过合理的市场定位进行创新,旨在为消费者提供便利的包装。如雅诗兰黛对其口红产品包装进行创新设计,在口红盖子上面加了一面小镜子,用弹簧连接在盖子的一端,当打开盖子时,小镜子会自动弹出,这样在使用过程中就省去了找镜子的麻烦,给消费者带来了极大的便利。

2.加强企业间的配合

包装设计远远超出了平面设计的范畴,如何保证结构设计合理、材料保护性最佳,以及设计与制造工艺匹配等,还需要包装企业与终端用户通力配合、彼此协调、相互启迪,共同来实现。上海济丰提倡“走在客户前面”的理念,提前帮客户想好可能会遇到的问题,并及时与客户沟通。黄昌海介绍,他们在与国外一家客户合作时,发现其提供的包装设计有些“用材过保护”,起初大多设计人员都不想去牵“沟通”这条线,只想简单地按照图纸来加工包装,但有人提出了应该与客户沟通并改进,于是通过一些性能检测报告,将新的设计方案交给客户,最终客户表示非常满意,并且双方建立起了长期的合作关系。所以,包装企业在设计环节的发展空间还很大,这就需要与终端用户主动交流、积极配合,从而实现双赢。

3.注重高素质设计人才的培养

包装设计师不仅仅是接受过良好培训的绘图设计人员,还要对市场状况进行常年研究,不断积累设计经验,关注包装企业与终端企业间的连贯性和相互融合性。大部分受访者表示,建立优秀的设计团队是企业包装设计发展的坚实后盾。例如,上海济丰形成了“梯队式”的包装设计师队伍,由一名高级包装工程师带2~3名资深工程师,每一名资深工程师带1~2名普通工程师,然后普通工程师去带实习生;HCP Packaging则在国外开拓市场,建立国外专业的包装设计团队,为其在化妆品包装行业做到龙头企业奠定了坚实的基础。

4.包装合理化

包装合理化已成为包装设计发展的主流之一,它推崇的是最合理的包装结构、最精练的造型、最低廉的成本。因此,在进行包装设计时,应避免过大、过度和过于简单的包装,还应充分考虑保护性、安全性及包装废弃物处理等因素。采访中我们了解到,一些包装企业已把包装合理化列为未来的发展方向,并且以此作为包装成本控制的必要手段。实现包装合理化的途径主要包括:首先,注重包装轻薄化,即在满足包装保护作用的前提下,尽量采用更轻、更薄的包装材料和包装方式,以提高装卸搬运的效率;其次,实现标准化操作,即外包装的规格应与托盘、集装箱标准尺寸相匹配等;最后,绿色环保,即最好选择可反复多次使用、并能回收再生利用的包装材料,同时也要考虑其对环境不会造成污染。

5.加大国产包装加工设备的研发力度

为了控制我国包装企业对进口包装加工设备的依赖性,我国包装加工设备制造商应加大研发与创新力度,扬长避短,贴合市场需求,为包装企业提供更贴心的设备,从而提高我国包装的制造水平,使更多的包装设计精品成为现实。值得欣喜的是,近几年,一些国产包装加工设备制造商迅速成长了起来,并相继推出了各种类型的全自动、高精度、高效率、高性价比的包装加工设备。这不仅使包装企业提升了市场竞争力,还解决了一些创新包装设计的加工制造难题。

视频并行处理系统分析与设计 篇4

关键词:非透明桥,PCI-E协议,并行运算,视频,同步机制

引言

图像与人们的生产生活息息相关, 是人类获取和交换信息的主要来源, 据统计人类有80%以上的信息来自于图像。随着数字化进程的加速普及, 人们对视频的需求提出了更高要求, 电视、内容、数字摄像机等提供的各种形式视频正在向高清转变。高清晰度的视频在各个领域的应用越来越广, 3D技术也日趋成熟, 需要对海量视频数据进行复杂处理的应用越来越多, 这对视频处理技术提出了一个新的挑战。传统的视频处理多采用GPU (Graphic Processing Unit图形处理器) 进行, 限于目前单个显卡的处理能力有限, 需要同时对一个大屏幕的高清视频数据进行纹理映射、颜色混合、3D渲染等操作的场合已经很难胜任了。近年来, 对于视频并行运算的研究取得了很多进展, 提出了很多的解决办法, 但是这些办法都是仅仅解决了视频处理中的某一个问题。例如目前利用网络进行并行运算的计算机系统, 虽然其并行运算的能力较强, 但是对于海量的视频数据, 其数据传输能力有很大的局限性;网络带宽不足以实时地传输信号, 这导致出现图像无法流畅显示的问题, 随着目前需要处理的视频数据量的增加, 这种缺陷已越来越严重。

1 非透明桥技术

非透明桥顾名思义是一座连接两端处理器的桥梁, 且两端的处理器均有独立的地址空间, 桥两端的主机不能看到另外一个主机完整的地址或者I/O空间。在非透明桥环境中, PCI Express系统需要在从一个内存地址空间穿越到另一个地址空间时进行地址翻译。每一个非透明桥 (NTB) 端口都有两套基地址寄存器 (BAR) , 一套是给主设备端用的, 另一套是给从设备端用的。基地址寄存器可用来定义在非透明桥另一端的内存地址空间的地址翻译窗口, 并允许这个翻译被映射到本地的内存或I/O空间。

非透明桥允许桥两边的主机通过便笺寄存器、门铃寄存器和心跳消息来交换一些状态信息。便笺寄存器在非透明桥的两端都是可读写的, 但是, 便笺寄存器的数量在具体的实现中是可以不同的。他们可以被桥两边的设备用来传送一些状态信息, 也可作为通用的可读可写寄存器使用。门铃寄存器被用来从非透明桥的一边向另一边发送中断。非透明桥的两边一般都有软件可以控制的中断请求寄存器和相应的中断屏蔽寄存器。这些寄存器在非透明桥的两边都是可以被访问的。心跳消息一般来自主设备端往从设备端的主机, 可用来指示它还活着。从设备主机可监控主设备主机的状态, 如果发现出错, 它就可以采取一些必要的措施。通过门铃寄存器可以传送心跳消息。当从设备主机没有收到一定数量预先规定好的心跳消息时, 就可以认为主设备的主机出错了[1]。

2 视频处理系统架构

本文提出了一种并行视频处理的系统架构, 具体见图1, 该并行视频处理系统包括了多个视频处理系统, 一个非透明桥和一个视频输出系统。视频处理系统主要完成规定的各种视频处理, 视频输出系统负责完成视频数据对屏幕的输出。非透明桥 (NTB) 用于连接视频处理系统和视频输出系统, 控制数据和视频数据的交互通过非透明桥芯片实现;非透明桥为系统之间提供一个高速的数据交换通道和通信的桥梁。多个视频处理系统和一个视频输出系统通过PCI-E总线和非透明桥 (NTB) 相连接, 利用NTB的交换 (switch) 功能, 实现多个视频系统之间的点对点通信。各个视频处理系统之间相互连接, 每个视频处理系统都可以单独和任意一个视频处理系统之间通信和进行海量数据传输;视频输出系统通过非透明桥的连接, 也可以和任意一个视频处理系统连接, 视频处理系统可以将任意一个视频处理系统的数据输出给屏幕显示。每个视频处理系统具有一个或多个外围设备相关联的信息处理模块, 外围设备信息通过PCI-E协议进出传输。

数据传输中采用了高速的PCI-E传输通道, 该并行架构系统解决了海量视频数据传输的瓶颈问题, 为并行处理提供了硬件基础。单通道的PCI-E总线[2]带宽可以达到10Gbps, 该总线有X1、X2、X4、X8和X16、X32 (X32目前还不支持) 通道规格可选, 如果采用X4, 通道的总带宽可以达到40Gbps (PCI-E 2.0协议) , 单方向带宽可以达到20Gbps。超宽的PCI-E数据传输通道为海量视频数据提供了高速通道。例如逐行扫描制式, 帧率通常为60Hz的1080P无压缩视频, 传输需要3Gbps的数据通道, 采用PCI-E通道可以传输多个1080P视频数据, 保证了视频信号传输的流畅。

3 视频并行处理方法

在图像处理的过程中, 需要对图像进行纹理映射[3]、颜色混合、深度缓冲、模板缓冲等步骤。这些串行步骤的执行均需要非常大的计算量, 并且耗时。因此, 在上述的并行视频处理系统的基础上, 提出了一种并行视频处理[4,5]的方法。我们这里将视频图像的处理分成若干个步骤, 分别由不同的视频处理系统来处理, 最后完成视频图像的处理并通过视频输出系统进行输出显示。每个视频处理系统都具备任意一个图像处理步骤的功能, 它根据上一个数据流携带的处理命令来执行相应的处理。我们在传输过程中对视频流数据进行打包, 一包数据可以包含一帧图像或者几十帧图像, 这可以根据实际的需求而定, 原则是数据交换的次数越少越好, 但是数据包也不能太大, 以至于影响到图像处理的时间。在数据包里边, 专门指定了一个位置用于包含视频数据处理命令。该处理命令在该包数据被成功处理后, 该位置的处理命令改为下一个处理命令。若该包数据没有被成功处理, 该处理命令不变。

该方法人为地将需要使用的视频处理过程分为若干个步骤, 每个步骤分块的原则是处理时间基本相等;视频处理步骤的粒度可大可小, 小至包括一个视频数据的深度缓冲或者对数变换, 大至视频数据的整个3D渲染过程;每个视频处理步骤由系统内的单个视频处理系统进行处理, 同时考虑到每个处理步骤的时间差异性问题, 提出了一种同步机制;在处理过程中, 同一个时间内, 每个视频处理步骤是同时在每个视频处理系统进行的, 达到了并行处理的效果;最后处理好的数据统一由高速的PCI-E通道送至视频输出系统进行输出显示。

因为有了各个视频处理系统间的高速PCI-E通道, 所以数据包传送的时间相对于图像处理步骤的时间来说非常少。每个图像处理步骤都包含了一个完整的流程, 如图2所示。

我们可以将图像处理的过程分为A、B、C、D四个步骤, 每个步骤在一个视频处理系统中执行。如图3所示, 我们采用视频处理系统并行做图像处理。

在T1时间周期内, 由视频处理系统1发起图像处理的命令, 并且将完成了图像处理步骤A后的数据打包, 同时加上图像处理步骤B的处理命令, 发送到视频处理系统2。发送完数据以后, 视频处理系统1继续对后续进来的视频流信号做处理。在T2时间周期内, 视频处理系统2接收到视频处理系统1发送过来的数据包后, 首先分析其图像处理命令, 发现是图像处理的步骤B, 便完成步骤B, 同时打包该处理完的数据并加上图像处理步骤C的处理命令, 将数据发送到视频处理系统3。发送完数据后视频处理系统2继续完成其后续视频流的处理。在T3时间周期内, 视频处理系统1和视频处理系统2在进行视频图像处理的同时, 视频处理系统3接收到发过来的视频数据包后, 对处理步骤命令进行分析, 完成步骤C的处理;处理完毕, 数据打包并添加步骤D的处理命令后发送到视频处理系统4。视频处理系统3继续完成后续的视频流的处理。在T4时间周期内, 视频处理系统1和视频处理系统2在进行视频图像处理的同时, 视频处理系统3接收到发过来的视频数据包后, 对处理步骤命令进行分析, 完成步骤C的处理;处理完毕, 数据打包并添加步骤D的处理命令后发送到视频处理系统4。视频处理系统3继续完成后续的视频流的处理。在T4的时间周期内, 视频处理系统1、视频处理系统2和视频处理系统3同时在做视频图像处理;视频处理系统4接收到数据后, 判断处理命令, 完成步骤D的处理, 此时该包图像全部处理完毕, 便送视频输出系统进行显示。

上述的处理过程只是一个基本视频数据并行处理方法, 它的一个关键在于整个图像处理步骤时间的合理安排, 要求每个操作步骤的划分合理。如果前级操作时间恰好等于后级的操作时间, 则最为简单, 前级的输出直接汇入后级的输入即可;如果前级操作时间大于后级的操作时间, 则需要

对前级的输出数据适当缓存才能汇入到后级输入端;如果前级操作时间恰好小于后级的操作时间, 则必须通过复制逻辑, 将数据流分流, 或者在前级对数据采用存储、后处理方式, 否则会造成后级数据溢出。

4 同步机制与异常处理

为了解决数据溢出问题, 本文在对图像处理步骤进行划分时, 尽量使得每个步骤的处理时间都相同, 这样可以很大程度上缓解前后级之间处理时间不一致造成的矛盾;同时引入同步机制[6], 在多个视频处理系统之间建立一个同步信息传递机制, 每个视频数据包被处理后往同步处理模块发送一个值, 当在一个时间周期内所有的处理步骤往同步处理模块发送了处理完毕的值后, 由同步处理模块发送视频数据流统一下传的命令。

图4为同步模块处理流程, 每次进入一个新的视频图像处理流程后, 同步模块开始计数;在同步模块计数器件, 图像处理的每个步骤处理完毕后, 视频处理系统均会发出处理完毕命令;同步模块接收该命令, 并对此进行判断在该图像处理周期中所有的处理步骤是否处理完毕;如果处理完毕则发出下个处理步骤的同步信号;若没有处理完毕则通过计数器判断该次处理周期时间是否达到T, 如果达到时间T则强制完成该处理周期, 发出下一个处理步骤的同步信号, 如果没有达到时间T则转入判断所有步骤是否处理完毕的流程中。

当强制同步信号到来时, 由于某种特殊情况, 视频处理系统对于本系统的图像处理步骤无法完成, 如图5所示, 在T3周期, 视频处理系统3处理出错。此时, 为了不影响整个处理流程的时间, 将数据包继续往下一级发送, 并且执行相同的处理步骤。在T3时间周期, 本来由视频处理系统3完成的处理步骤C, 出错后, 在T4时间周期, 由视频处理系统4完成。上述提到图像处理步骤A、B、C、D可以根据不同的应用来定义, 处理步骤的粒度可大可小。对于一些比较大粒度的功能分工, 如3D处理和GIS等, 也可以采用上述提到的并行处理方法完成。如图3所示, 可以用步骤A表示3D处理, 步骤B表示GIS处理, 由两个视频处理系统分别完成, 同时在视频输出进行叠加显示;并采用方法中提到的同步机制使得两个系统处理后的图像能同时显示。

5 结果与分析

本文根据目前一些海量数据并行处理的应用限制, 提出了通过非透明桥连接的多CPU并行出现系统架构, 并提出了一种并行处理的方法。该并行处理方法在笔者设计的系统平台中得到了实际应用和验证, 运行效果良好, 突破了单个高性能CPU计算能力, 大大提高了海量视频信号的处理能力;而且该处理方法不会单纯地依靠硬件技术如CPU处理速度等的发展, 可以通过合理调节视频处理步骤来实现快速视频处理的功能, 具有很高的产品推广价值。

参考文献

[1]李才华.PCI_Express非透明桥在智能系统中的应用设计[J];电子元器件应用.2009 (8)

[2]樊博, 王延杰, 孙宏海, 基于PCIe的高速图像注入式仿真系统[J];计算机工程与设计.2014 (3)

[3]薛军涛, 贺怀清, 张宇翔, 等, 典型纹理映射实现方法的研究[J].计算机工程, 2005 (3)

[4]易勇, 分布式并行视频服务器设计技术[J].贵州科学, 2000 (12)

[5]谷国太, 肖汉, 并行计算与并行处理技术的应用研究[J].河南理工大学学报, 2009 (10)

并行设计 篇5

0引言

以尺度不变特征变换(Scale Invariant Feature Transform,SIFT)算法[1]为代表的基于特征的图像匹配方法近几年发展迅速,该算法对光照、角度或尺度变化的图像都有较好的匹配精度和适应性,但实时性差。为了提高实时性,在此基础上又衍生出了主成分分析(Principal Component Analysis,PCA)SIFT[2]、快速鲁棒特征(Speed Up Robust Feature,SURF)检测[3]等改进算法。这些改进的算法尽管在速度方面有所提升,但实时性仍然不能满足实际应用要求且在抗尺度和抗旋转方面性能都有不同程度的下降,因此仍无法取代经典的SIFT算法[4]。

近年来随着图形处理器(Graphics Processing Unit,GPU)计算能力的不断提升,利用GPU天然硬件并行的特性来加速非图形通用大规模运算逐渐受到人们的青睐,目前较为成熟并得到广泛应用的GPU并行编程模型为英伟达(NVIDIA)公司开发的统一计算设备架构(Compute Unified Device Architecture,CUDA)模型。文献[5-7]利用CUDA实现了SIFT算法关键步骤的GPU并行加速,取得了一定的加速效果。文献[8-9]在移动GPU平台上利用开放式计算语言(Open Computing Language,OpenCL)实现了SIFT算法的并行加速,相对于移动中央处理器(Central Processing Unit,CPU)取得了4.6~7.8倍的加速效果。另外,完成同样的计算,GPU比CPU的功耗低87%,即利用OpenCL实现的GPU并行运算相对于传统的CPU具有更高的性能功耗比,但以上方法大多采用步骤分离的优化,没能充分利用GPU全局内存以及算法各步骤的中间计算结果,加速效果受显存带宽的制约。

另外利用CUDA实现的算法只适用于NVIDIA显卡,移植困难,而目前的计算机系统大多是“CPU+协处理器”的异构系统[10],这使得CUDA无法充分利用异构系统中不同类型的计算核心。具有跨平台特性的开放式并行编程语言OpenCL的出现为解决此问题提供了契机,利用OpenCL设计的并行算法能够在CPU+(GPU、数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)等异构系统间移植[11-12],该特性使得经OpenCL优化的算法能够摆脱对硬件平台的依赖。自2010年OpenCL1.1发布以来,对OpenCL技术的应用研究逐渐兴起。陈钢等[13]对OpenCL内存操作作了深入的分析;Yan等[14]利用OpenCL实现了SURF算法的并行加速。OpenCL编程相比CUDA更为复杂[15],在软件开发方面也面临更多的挑战和困难,目前在PC平台上还没有利用OpenCL并行优化的SIFT算法出现。

针对以上问题,本文对SIFT算法步骤及数据索引方式进行重构,提高其并行度,然后通过优化内存读取、合理利用OpenCL内存层次等策略对该算法进一步优化,在NVIDIA GPU平台上实现了SIFT特征的快速提取。为研究OpenCL的可移植性,将优化的GPU版本移植到Intel双核CPU平台上,实验表明优化后的算法在两种计算平台上的实时性都有一定提升。

1SIFT特征提取算法流程

SIFT算法最早由Lowe[1]在1999年提出并于2004年完善,由于其良好的匹配特性,目前已得到广泛研究与应用。SIFT特征点提取实质是在不同尺度空间上查找关键点(特征点),算法基本步骤如下。

1)尺度空间构建。

2)高斯差分金字塔空间构建。

3)DOG空间极值点检测。

DOG空间极值点检测就是将DOG图像中每个像素与它同尺度的8邻域点及上下相邻尺度对应的9×2个邻域点进行比较,若为极值点则作为候选特征点,记录其位置和对应的尺度。为获得更精确的特征点位置,在候选特征点处进行泰勒展开,得到式(4):

D(x)=D+DTxx+12xT2Dx2x(4)

其中:关键点偏移量为x此处的偏移量x,与后面的x的命名重复,不太规范,因一篇论文中,一个变量仅能代表一个含义,若包括两个含义,则指代不清晰,是否可以用另一个变量对此进行说明?

回复:这两个变量x是使用字体来区分的,一个是粗斜体表示向量,一个是细斜体,表示普通变量。是可以区分的。

这个公式是经典文献[1]中此算法的原作者提出的公式,也是用这种方式表述的。为保持统一,所以我觉得可以不用修改。=(x,y,σ)T;(x,y,σ)在该极值点处的值为D;令D(x)x=0,可通过式(5)求得极值:

=-2D-1x2Dx(5)

在Lowe[1]的文章中当在任意方向上的偏移量大于0.5时,认为该点与其他关键点很相似,将其剔除;否则保留该点为候选特征点,并计算该点对应的尺度。

4)特征点主方向计算。

5)SIFT特征矢量生成。

将特征点邻域内图像坐标根据步骤4)计算出的特征点主方向进行旋转,使得特征向量具有旋转不变性,旋转后以特征点为中心划分成4×4个子区域,在每个子区域内计算8方向的梯度方向直方图,即可构成4×4×8共128维SIFT特征矢量。

2SIFT算法的并行化重构

OpenCL标准将内核可用的内存分为私有内存、局部内存和全局内存/常量内存等类型[16],所以在利用OpenCL优化算法时,充分挖掘GPU内存的存储层次,合理分配工作组大小是提高并行运算效率的关键[17]。为提高算法并行度方便数据划分、降低内存带宽要求,本文对SIFT算法作了以下重构。

1)步骤合并。将构造尺度空间、创建高斯金字塔及极值点检测三步骤统一设计,目的是充分利用OpenCL的global memory和local memory的访问机制,使得这3个步骤的中间计算结果最大限度地在显存中完成交互,减少内存与显存间的数据交换次数,隐藏带宽延时。

2)步骤拆分。将极值点定位分为极值点坐标检测和极值点精确定位两步:第1步只返回极值点坐标,目的是辅助主机端完成内存分配;第2步完成极值点精确定位。

3)重构数据索引。本文全面摒弃基于队列的特征点索引方式,而是采用线性存储的方式管理特征点集,这对OpenCL内核的工作项划分、提高数据读取效率以及降低内存访问冲突都非常有效。

4)任务细粒度并行。经过数据索引重构,在OpenCL的内核运行时,可方便地部署大规模的工作组和工作项,实现计算任务的细粒度划分。经过以上设计后不仅能提高数据访问速度,而且能够避免潜在的内存访问冲突。

3SIFT算法的OpenCL实现

图1为并行设计的SIFT特征提取流程。整个设计充分利用全局内存以降低数据传输延时。主机端首先分配相应内存对象,然后依次入列高斯模糊、DOG金字塔和极值点检测3个OpenCL内核,完成后即可生成尺度空间和DOG金字塔,从全局优化考虑,将这两部的结果驻留在全局内存中,只返回经压缩的极值点坐标。接着按序运行极值点精确定位、特征点方向计算和特征向量生成3个步骤,计算完成后即完成特征提取全过程。整个流程仅有返回极值点坐标和返回特征点结果两次读回操作,其余的中间结果全部在显存中完成交互,提高数据利用率,降低显存带宽要求。

3.1高斯模糊+DOG+极值点检测内核设计

深入发掘算法的并行潜力,充分利用OpenCL的内存层次、合理配置工作项数量和工作组大小是性能提升的关键,也是内核设计的难点。

3.1.1高斯滤波内核设计及工作项分配

为降低计算量,将二维高斯变换分解为沿水平和垂直方向的一维变换,分解后可减少(N2-2×N)×W×H次乘法运算(N为高斯核大小,W、H为图像的宽和高)。由于每个像素相互独立,所以在NDRange函数入列高斯滤波内核时将工作项大小设置为W×H-N,即每个工作项完成一个像素的卷积。另外,进行卷积时相邻像素(图2黑实线框内数据)要重复读取图2灰色部分的数据,为提高读取效率,本文通过配置工作组,实现原始数据在局部内存中共享。图2为水平高斯核宽度为7、工作组大小设置为8时的数据分配,图2表示每8个工作组读取14个数据,完成8个点(图2黑虚线框内数据)的卷积运算。

在工作组内共享局部内存通常能提高计算性能,但并不绝对[18]。为找到工作组的最佳大小,本文测试了不同工作组大小时,宽度为11的高斯核对分辨率为1280×960的图片进行水平卷积的耗时,测试结果如图3所示。随着工作组的增大,耗时逐渐减少,当工作组大于128后,耗时基本不再改变,又因为局部内存的限制,工作组不宜太大,于是本文将工作组大小配置为128。如此设计需考虑同一工作组中工作项的同步化问题,本文采用OpenCL提供的barrier(CLK_LOCAL_MEM_FENCE)障碍函数来实现,垂直滤波与此类似,不再赘述。

3.1.2DOG金字塔构建

此步骤的内核有两种设计方法:1)一次入列内核,只将高斯金字塔相邻两层相减,得到一层DOG图像;2)一次入列内核,将高斯金字塔整组图像传入内核,计算完成后即可得到一组DOG图像。

经实验发现,第2种方法数据利用率高,耗时较短。又因为高斯金字塔每组层数固定,所以第2种设计的参数也固定,于是本文采用第2种设计方法,数据划分如图4所示。为进一步提高运算效率,对数据的运算都以float4型向量进行,共配置(W×H+3)/4个工作项,即每个工作项完成一组高斯金字塔对应位置(图4单个虚线框内数据)的float4型向量相减。

3.1.3极值点检测及内核精确定位

入列极值点精确定位内核前,主机端需预先分配内存,而事先并不知道需要为多少个特征点分配内存,所以本文将极值点检测和精确定位作为两个内核先后入列,为减少数据传输,极值点检测内核只返回压缩的极值点坐标数组。

极值点检测内核计算完成后,根据返回的极值点坐标在CPU端统计极值点位置和个数N,然后为N个特征点分配内存,如图5所示(实际分配1.5×N个,Lowe[1]文中指出实际的特征点数会是极值点数N的1.15倍左右)。图5中每个虚线框用来保存一个特征点的完整信息。最后入列极值点精确定位内核,每个极值点配置一个工作项,计算出的精确坐标按工作项索引存入图5对应的位置。

3.2计算梯度方向直方图

至此,已经得到每个特征点的坐标、尺度,并按线性存储在图5所示的全局内存中。因为每个特征点在内存中按线性排列,相互独立,所以为每个特征点配置一个工作组来计算梯度方向直方图,工作组分配如图6(a)所示。将工作组内工作项设置为2维,为确定工作组最佳大小,本文尝试了{1,RAD}、{2,RAD}、{4,RAD}、{8,RAD}四种方式,经测试{2,RAD}效果最好(其中RAD为特征点的邻域宽度)。当RAD=5时,每个工作组分配10个工作项,工作组中的数据分配如图6(b)所示,图6(b)中标有相同数字的像素被同一工作项处理。为实现数据共享,在工作组local_memory中构建方向直方图,这时必须使用OpenCL提供的atomic_add原子累加操作才能保证多个工作项同时累加直方图同一位置时不会出错。直方图生成后统计出大于直方图极值80%的点的个数和角度,作为独立的候选特征点,将结果填入图5中对应的位置。

3.3特征向量生成计算出特征点主方向后,即可入列特征向量生成内核,因数据重构后各特征点在内存中线性存储且可独立计算,所以为每个特征点分配一个工作组。又因每个特征点邻域被划分为4×4个子区域,所以为每个工作组配置16个工作项分别计算每个子区域的8个方向,数据划分如图7。图7中每个箭头的长度表示每个方向的梯度累计值,箭头越长代表值越大。所有工作组计算完毕后,整个SIFT特征提取算法执行完毕,提取出的特征点全部存储在图5所示的线性内存中。

利用以上方法对两幅图片进行特征提取后,即可利用欧氏距离准则完成两幅图片特征点的粗匹配,然后用随机抽样一致(RANdom Sample Consensus,RANSAC)算法对粗匹配对进行提纯,计算得到两幅图片之间的变换矩阵,完成两幅图片的匹配。

4优化后的算法在CPU上的移植

为进一步验证OpenCL的可移植性并比较OpenCL在不同平台上的加速性能,本文将优化后的OpenCL_GPU_SIFT算法移植为能在CPU上运行的OpenCL_CPU_SIFT版本。尽管OpenCL具有跨平台特性,但由于硬件资源的差异,仍需注意以下两点:

1)本文采用的Intel core i5 3210m CPU不支持OpenCL 32位原子操作,所以在3.2节的内核设计中无法使用atomic_add原子累加操作,只能将3.2节的工作组大小配置为1,此时每个工作组中只有一个工作项,因而不能实现局部内存共享。

2)工作组中工作项的数量上限一般受限于两点:一是设备所能提供的资源数,二是内核所需的资源数,这里的资源主要指的是局部内存。针对3.2节的内核,GT635m GPU的局部内存为47KB(K表示×1024),工作组上限为512,而Intel 3210m CPU的局部内存只有32KB(K表示×1024),工作组上限为352,所以工作组大小一定要根据硬件平台来设置,这点尤为重要。针对以上两点修改后得到的OpenCL_CPU_SIFT版本即可运行于Intel 3210m CPU中,可见OpenCL具有较好的可移植性。

5实验结果及分析

5.1实验平台

本实验的实验平台CPU为Intel Core i5 3210m,双核心四线程,2.5GHz;GPU采用NVIDA GeForce GT 635m,核心频率660MHz,96个流处理器单元,128位总线宽度;开发环境为Vs2013,OpenCV版本2.4.9,OpenCL版本1.1。

5.2实验方法

本文实验的代码是在Rob Hess维护的SIFT算法(http://robwhess.github.io/opensift/,本文称之为CPU_SIFT)的基础上修改而来。实验分别测试并行化的OpenCL_CPU_SIFT和OpenCL_GPU_SIFT这两个版本用时,并与未优化的CPU_SIFT版本用时作比较分别计算两个版本的加速比。实验选取a,b两组图片。a组有a1~a5共5幅图片,b组有b1~b4 4对共8幅图片。为使实验结果更具有参考性,其中a1选取Rob Hess采用的behavior图,分辨率为320×300;a2选取国际通用的Lena图,分辨率为512×512;a3此处是否描述有误?即a2~a5,共4幅图像,而后面的描述中却有3幅,所以请作相应调整。~a5为利用CCD摄像头获取的3幅纹理从简单到复杂的测试图片,分辨率分别为960×720、1280×960、2560×1440。另外为了测试优化后的算法对不同图片的适应性,b组图片选取4对有角度、光照和尺度变化的图片,分辨率统一为1280×960。

5.3实验结果

在与原CPU_SIFT算法匹配效果一致的情况下,各图片的耗时如表2所示,利用OpenCL优化后的CPU版本和GPU版本的加速比最大分别为4倍和19倍左右,如图8所示。这表明OpenCL不仅具有优秀的并行计算能力,而且具有较好的跨平台特性,这也是OpenCL相对于CUDA的一大优势。

通过对比表1和表2可知,本文在PC平台实现的SIFT算法的加速比比文献[9]中实现的加速比更高,特别是当图像分辨率较大时,本文实现的加速比会进一步增大。这主要是因为两点:1)数据量越大,越能充分发挥GPU并行运算的能力,越能隐藏数据传输延时;2)由于移动处理器架构的限制,文献[9]只针对SIFT特征点检测部分进行了优化,而本文则是对整个SIFT算法流程进行统一优化,充分利用了GPU的全局内存,数据读取效率更高。另外,通过对比进一步证明了OpenCL对移动平台和PC平台都具有广泛的适用性,再次说明OpenCL具有较好的可移植性和跨平台性。

图9为本文算法对a组图像的特征提取结果。由图9可知,优化的算法对图像处理领域常用的Lena图和behavior图都能有效地提取特征点,a3~a5三张图片的纹理由简单到复杂,优化后的算法均能有效提取特征点。在b组图片中,b1的两幅图片有角度变化,b2有光照变化,b3既有角度又有光照变化,b4的角度、光照和尺度均有变化,匹配结果如图10所示。综合图9和图10的实验结果可知,优化后的算法对不同分辨率、不同纹理复杂度的图像都能提取稳定的特征点,对具有角度、光照和尺度变化的图像都能正确匹配,这表明并行化后的算法对各种图片都有较好的适应性。

为进一步分析不同平台不同数据规模对OpenCL加速性能的影响,针对a3、a4和a5三幅不同分辨率的图像,本文分别统计了优化后的GPU和CPU版本各步骤的加速比,结果如图11和图12。图11和图12中步骤1为高斯模糊+高斯差分金字塔生成,步骤2为极值点定位,步骤3为计算方向直方图,步骤4为特征矢量生成。对比图11和图12可知,无论是GPU还是CPU平台,优化后,高斯模糊+高斯差分金字塔生成步骤加速比都最大,GPU版本甚至达到了50倍,这是因为该步骤中各工作项数据独立无分支,并行度高。而极值点定位步骤有大量的选择判断语句,并行度较差,闫钧华等[19]将此步骤放在CPU端执行,本文将此步骤一并优化,速度有一定提升但不够理想,这是因为在并行编程中无论CPU还是GPU都受分支语句的影响,GPU尤其如此。另外,与图11不同,图12中的三条曲线无交叉,随着图片分辨率的增大各步骤的加速比都逐步增大,说明数据规模越大越能发挥并行运算的优势。另外OpenCL_CPU_SIFT版本的特征向量生成步骤比计算方向直方图步骤的加速效果更好,这是因为前者通过工作组共享局部内存能充分利用CPU的L1 cache,从而提升运算性能。

6结语

本文对SIFT算法进行合并、拆分和数据重构等并行化设计,改善提高了算法的并行度,并通过合理设置工作组和工作项大小,充分利用内存层次等方法对算法进一步优化。利用OpenCL并行编程语言的跨平台特性,本文分别在NVIDIA GPU和Intel CPU平台上对该算法进行并行优化,分别取得了10.51~19.33和2.34~4.74倍的加速,并利用OpenCL的可移植性解决了CUDA对硬件平台的依赖问题。本文的研究内容及结果可应用于提升遥感图像拼接、医学影像配准和流水线工件定位等领域的图像匹配速度。

快速成型在并行设计系统中的应用 篇6

关键词:并行设计系统

设计方法

快速成型

并行工程(Concurrent Engineering,CE)是一种工程方法论,是随着并行设计的发展而出现的一个概念,并行工程是一种以集成方式【并行地】设计产品以及制造和支持等相关过程的系统化方法。

一、串行设计与并行设计

传统串行的产品设计与开发过程,以顺序的任务方式进行的,整个过程被分割成串行的若干阶段,下游阶段的启动需以上一个阶段的结束作为前提,阶段与阶段之间具有较为明显的停顿和交接,整个过程中信息及各领域产品开发人员间的意见交流仅限于毗邻的两个阶段,无法完成信息的及时反馈与交流。这种方法必然导致产品的设计与制造之间存在严重的隔阂,因此与传统的串行设计相比,并行工程是对产品及其相关过程(包括制造和支持过程)进行集成、并行设计的一种系统性工作模式。这种工作模式力图使开发者从一开始就考虑到产品全生命周期【从概念形成到产品报废处理)中的所有因素,包括质量、成本、进度及用户需求,在产品开发过程中的各个阶段的工作交叉进行,以使设计出来的产品能达到一次性成功。

二、并行设计系统的实现

在传统的设计方法中,由于设计者自身的能力有限,不可能在短时间内仅凭借自己对产品的使用要求的理解就能把产品各方面的问题都考虑的很周全。而串行的设计系统很难与机械机构设计师、市场销售人员等相关部门做到高效的交流互动,因此造成了设计效率低下,延长设计周期,甚至错过市场机遇。在产品设计中引入并行工程实现产品并行设计系统,可以使产品开发在早期阶段能全面考虑产品开发过程中的各种因素,从而缩短产品卡发周期,提高产品质量,降低成本。

并行工程应用至产品开发过程中就是打破传统的组织机构带来部门分割封闭的观念,强调各部门协同工作的效应,重建产品开发过程并运用先进的设计方法学,在产品设计的早期阶段就考虑其后期发展的所有因素,提高产品设计、制造的一次成功率。并行设计的核心是过程集成,更侧重时间上的协同,这是一种集成地、平行地处理产品设计、制造及其相关过程的方法。下面是两个关于并行设计方法的描述性模型。

并行设计的环节重叠模型

(一)、环节重叠和压缩模型:大多数关于并行设计的论述把并行设计的过程描述成一个活动环节重叠、压缩的过程。这样在产品开发的每个环节执行过程中均与上一环节的相关人员进行交流,充分考虑下一环节可能遇到的问题,相互并提出设计意见,从而提高产品设计的效率。

(二)、圆桌模型:因为影响产品设计效率及设计成功率的因素有很多,每一环节出了问题都可能导致其它环节的瘫痪,因此在并行设计中采用如圆桌会议的方式能够使产品设计的各部门如坐在一张圆桌上一样进行交流研究,共同参与产品设计的每一环节。(图2)。

并行设计的方法主要有以上两种,其目的在于在于设计过程的集成化、系统化,产品开发的所有部门共同参与产品开发的每一环节。而实现并行设计的关键在于各部门之间的信息交流和知识共享,而传统的设计信息交流方式主要靠面谈或通过电话等通讯工具讨论加以解决。但这些方式很难做到及时、充分的协商和讨论。因此一项大的设计任务接口问题难免出现差错,这正是设计过程不断反复修改的主要原因。虽然在现代设计领域中,造型设计师与结构设计师都是利用计算机辅助设计绘出效果图和工程图,通过网络共享设计数据等信息资源,来同步考虑产品设计与制造的上下游问题,从而实现并行设计,但仍然存在着一定的障碍。如在造型设计阶段,产品造型设计师通过绘制效果图来表达自己的创意,在交流的过程中其它部门的人员通过效果图来理解设计方案,由于效果图是一种理想状态下的平面图,很容易引起视觉偏差,导致效果图漂亮而实际制作出来并不尽人意的情况。另外效果图能否充分表达设计创意、能够表达出设计的每一个细节也值得怀疑。

三、快速成型体现的优势

在产品机械结构设计阶段,结构工程师设计表达一般利用两种方法,一种是利用CAD绘制平面工程图,另一种是利用三维工程软件(CATIA、UG、Pro/E等)绘制三维模型。在与其他部门交流的过程中只能靠平面图纸或带电脑当场演示,由于其它部门人员缺乏工程相关知识,根本看不懂图纸,因此无法交流,三维数字模型虽然有很强的直观性,在三维软件中可进行结构、性能分析、也可以进行模拟装配,可以进行外观造型的渲染,甚至可以在虚拟现实环境下进行操作和使用,但也无法取代三维实体模型,因为三维数字模型存在一些致命的缺陷如:数字模型无法提供产品的全部信息(如手感);数字模型只能模拟已知的环境条件;三维空间中的实体模型比二维屏幕上的数字模型更具有真实感和可触摸型等,因此只是凭视觉判断,对于复杂设计很容易忽略或遗漏一些重要信息。而利用模型或样机能够更加形象、直观、准确的表达设计思想,实现真正的无障碍交流。传统制造實物模型和样机的方法是手工制作或采用机加工的方法制作,时间长、成本高、制作精度也不够,特别是遇到形状复杂的设计时模型的误差更大,周期长,从而影响了设计的表达,不能达到交流的目的,延长设计周期。采用快速成型技术,设计者在设计的最初阶段就能拿到实在的模型或样品,并且可在不同的阶段快速地修改重做,根据精确模型或样机让各部门人员判断设计方案的各种问题,提出建设性意见,实现无障碍交流,从而为产品开发创造一个良好的设计环境,尽快得到优化结果。因此,快速成型技术是真正实现并行设计的强有力手段。

并行设计在美国、德国和日本一些西方发达国家已经得到广泛应用,其领域包括汽车飞机、计算机、机械和电子等行业,并且把并行工程作为提高效率、降低成本的重要手段。美国波音(Boeing)公司在1994年向全世界宣布,波音777飞机采用并行工程的方法,大量使用CAD/CAM技术,实现了无纸化生产,试飞—次成功,并行工程的应用及其设计制造信息化的应用使波音公司把777的研制周期从757和767的9-1 0年时间缩短为4年多,创造了显著的经济效益和市场竞争能力;德国人基于并行设计的理念,设计了易于制造的ME-109型战斗机,全部设计制造时间只有4000小时,而与之相当的英国喷火式(Spitfire)战斗机的设计制造时间是13000小时。日本的丰田公司采用经理分则的并行工程方法,使各个阶段同步或交叉进行,大大提高了产品开发的效率。

综上所述,并行设计的优势是传统串行设计无法比拟的,并行设计可使产品设计与制造之间的信息共享,使整个产品开发团队从设计的一开始就全部参与进来,尽早地发现问题并解决之,避免没有必要的返工,从而缩短产品设计周期,更快反应市场,降低企业开发成本,增强企业的核心竞争力。从并行设计的本质可以看出实现并行设计的核心问题就是信息沟通与知识共享,而只有通过设计模型或样机才能实现无障碍沟通,快速成型技术能够快速、精确地制作出设计模型或样机,因此快速成型技术能够为并行设计的实施提供一个无障碍交流的平台,是实现并行设计强有力的技术支持,利用快速成型技术能够实现并行设计系统的良好运转。

参考文献:

1.熊光楞,张和明,李伯虎,并行工程在我国的研究和应用,计算机集成制造系统.2000

2.周生祥,智能化CAD,CAPPC,AM集成技术的研究与实现,博士学位论文.1998

3.徐有忠,并行设计系统的若干关键技术问题研究及其原型实现,博士学位论文.2003

一种主从式并行遗传算法设计 篇7

遗传算法是一种模拟生物在自然环境中的遗传和进化过程而形成的概率搜索算法,它模仿生物在自然环境中的遗传和进化机理。它将问题的解表示二进制编码串。在搜索前给出一定种群大小的染色体群,然后按适者生存、优胜劣汰的遗传机制,从中选出较适应环境的染色体进行复制,再进行交叉、变异过程。最后就会收敛到最适应环境的一个染色体上,即问题的最优解。

早在70年代,遗传算法的奠基人Holland通过模式定理的分析阐述了它所隐含的固有并行性。近年来,随着并行计算研究的深入和发展,遗传算法的并行实现研究也得到了进一步发展。

2 并行遗传算法与MPI并行算法

2.1 并行遗传算法

就目前的研究现状来看,并行遗传算法可以分为主从模型、粗粒度模型和细粒度模型三种[1]。

主从式模型的特点是将个体适应度的计算交给各个从处理机并行进行,而遗传操作由主处理机完成。1992年Abramson在共享存储的并行计算机上实现了主从式并行遗传算法,用于时间表的优化。主从式方法在适应度评估很费时、远超过通信时间的情况下才有效,否则通情时间超过计算时间反而会降低速度。而且这种方法要求有同步机制,这就会导致主进程忙而子进程闲或反之,引起负载不平衡,效率不高。粗粒度模型就是将群体划分成若干子群体,它们独立地进行演化,每经过一定的时间间隔就将它们的最佳个休迁移到其它子群体中。粗粒度模型是目前应用最为广泛的一种并行遗传算法模型,它主要开发群体之间的并行性。细粒度模型将群体划分成众多的小群体,与粗粒度模型相同,选择、变异等遗传操作均限于子群体内部,不同之处在于细粒度模型是通过同类群的重叠(overlap)完成个体迁移的[2]。

2.2 MPI并行算法

并行计算(Parallel Computing):简单的讲,就是在并行计算机上或分布式计算机等高性能计算系统所作的超级计算,其物质基础是高性能并行计算机(包括分布式网络计算机)[3]。

消息传递接口MPI(Message Passing Interface)是为MIMD模式分布式存储器并行计算机和机群系统制定的消息标准。目标是为这类机器建立一个可移植的、易使用的标准消息传递环境。MPI提供一个独立于平台的消息传递库标准,实现程序可移植性的目的,支持PC机、工作站和几乎所有并行机,用MPI编写的程序可不加修改的应用于所有的操作系统平台。MPI环境的初始化和结束流程如下:在调用MPI例程之前,各个进程都应该执行MPI_INIT,接着调用MPI_COMM_SIZE获取缺省组(group)的大小,调用MPI_COMM_RANK获取调用进程在缺省组中的逻辑编号(从0开始)。然后,进程可以根据需要,向其它节点发送消息或接收其它节点的消息,经常调用的函数是MPI_SEND和MPI_RECV。最后,当不需要调用任何MPI例程后,调用MPI_FINALIZE消除MPI环境,进程此时可以结束,也可以继续执行与MPI无关的语句。

3 基于MPI的主从式遗传算法的设计

3.1 算法设计

该模式采用主从式的MPI程序设计思想:将主进程设计为寻找当前代的最优个体并将其发送给各个从进程,从进程进行串行的GA,寻找最优个体给主进程。

1)产生一个进程(该进程为主进程,用于存放和发送当前最优个体);

3)各从进程进行串行GA,当从进程中遗传代数被n整除,从进程发送最优个体至主进程;

4)主进程选择当前各从进程中最优个体,发送给各从进程;

5)各从进程把主进程选择的最优个体替换各从进程当前代种群中适应值最低个体;

6)若各从进程皆满足条件,执行第7)步,否则执行第3)步;

7)算法终止。

3.2 并行程序间消息传递实现的核心代码

主程序代码:

4 实例测试

4.1 问题描述

针对求遗传算法解的精度和解的效率,常常采用经典的测试遗传算法效率的OliverTSP问题来测试。OliverTSP问题的30个城市位置坐标如图表1所示[4]。

4.2 测试方法和环境

测试方法是:通过从硬盘的文件中读取数据来设置染色体长度、种群的规模、交叉概率和变异概率等参数,分别记录串、并行程序到达指定代数时最短路经的长度。需要指出的是遗传算法是一种概率搜索算法,每次的计算结果各有差异,因此算法的计算结果中最短距离路径的长度指得是计算5次的平均值。测试环境是:通过将四台机器加入一个域中,利用域中的同一个用户来调用四台IBM机器中的资源,实现了并行环境。测试的硬件环境如表2所示,测试的软件环境如表3所示,遗传算法参数如表4所示。

4.3 测试结果及结论

通过多次试验和研究总体的发展趋势如图1所示,不难得出下面结论:

并行遗传算法提高了遗传算法的收敛速度,缩短了达到给定精确度的耗时。但是就遗传算法的精确性而言还是由遗传算法本身的特性决定的。

摘要:该文对串行遗传算法进行了并行设计,加入对当前通用消息传递接口MPI的支持,形成了一个主从式并行遗传算法。针对该算法用经典的测遗传算法效率的OliverTSP问题进行测试,得出并行遗传算法可以更好的提高遗传算法的收敛性。

关键词:主从式并行遗传算法,MPI

参考文献

[1]陈国良,王照法,庄镇泉,等.遗传算法及其应用[M].北京:人民邮电出版社,1996.

[2]郭绚,石晓虹.并行遗传算法的性能分析[J].航空计算技术,1998,28(3):86-89.

[3]陈国良.并行计算——结构~算法~编程[M].北京:高等教育出版社,2001.

并行数字匹配滤波器的设计 篇8

高速数据传输系统中,基带数据速率可高达几百兆,如果以传统的串行方式对数据进行处理,接收机的工作时钟频率会很高,给硬件电路实现带来了许多困难,尤其是对于处于接收机中工作时钟频率较高部分的数字匹配滤波器的实现。因此,针对高速数据传输系统,提出对匹配滤波器进行并行处理。有限脉冲响应(Finite Impulse Response,FIR)滤波器具有稳定、线性相位和对称性的特点,是常用的数字滤波器结构,因此常用FIR滤波器来设计和实现匹配滤波器。

1 匹配滤波器原理

匹配滤波器是指输出信噪比最大的最佳线性滤波器。若滤波器的输出端能够获得最大信噪比,就能对受到高斯白噪声干扰的信号进行最佳检测,从而提高系统的检测性能。“匹配”之意为滤波器的冲激响应与所检测的脉冲信号是相匹配的。

匹配滤波器的传输函数为:

H(ω)=KS*(ω)e-jωt0。 (1)

式中,S*(ω)为输入信号s(t)的频谱函数S(ω)的复共轭。匹配滤波器的冲激响应为:

h(t)=Ks(t0-t)。 (2)

匹配滤波器的冲激响应是信号s(t)的镜像信号s(-t)在时间上在平移t0。为了物理可实现匹配滤波器,一般选择t0在信号终止的时刻,即t0=T,T为信号持续时间。

引起基带数据传输系统产生比特差错的另一个原因是传输符号间的码间干扰。较为常用的满足无码间干扰条件的传输函数是具有升余弦特性的传输函数,它的时域表达式为:

h(t)=sin(πt/Τs)πt/Τscos(απt/Τs)1-4α2t2/Τs2。 (3)

式中,α为滚降因子,在(0,1)区间取值,α较大时,时域波形衰减快,振荡小,利于减小码间干扰和定时误差,但系统占用频带宽,频带利用率低,带内噪声对信号影响增大。相反,α较小时,系统频带利用率提高了,噪声干扰减小,但时域波形衰减慢了,对于码间干扰和定时误差影响加大。实际应用都会折衷选择α。

而要得到最佳基带传输系统,就要使发端成形滤波器和收端匹配滤波器都满足平方根升余弦特性的。FIR数字滤波器具有线性相位和对称特性,因此在实际中常用FIR滤波器结构实现成形/匹配滤波。

2 并行匹配滤波器算法分析

2.1 并行匹配滤波器原理

匹配滤波器进行并行处理的原理是,处理过程中有一些互不相关的运算,可以利用这一点进行并行处理运算。这种并行处理的实质,是对某些单元资源的复制。时域并行处理FIR 匹配滤波器就是按上述原理进行的。以一个8 阶FIR 滤波器为例,其串行直接型结构如图1所示。

输入序列x(n)通过滤波器系统h(n)后的输出为:

y(n)=i=08hix(n+8-i)。 (4)

由于FIR滤波器的系数有对称性,即

h0=h8 , h1=h7 , h2=h6 , h3=h5。

所以式(4)可以写为:

y(n)=i=03hi[x(n+i)+x(n+8-i)]+h4x(n+4)(5)

若将输入数据进行4路并行处理,并采用一些延时单元,其原理示意如图2所示。

这样可以同时获得x(n)到x(n+11)共12个数据,并根据式(5)可以同时获得4个输出:

y(n+j)=i=03hi[x(n+j+i)+x(n+j+8-i)]+h4x(n+j+4)

j=0,1,2,3。 (6)

2.2 时域并行匹配滤波器分析

时域并行处理可以降低输入数据的速率,使滤波运算在较低的时钟频率上工作。但这种并行处理实质上主要是对数据与滤波器系数相乘运算单元的复制,反映到实际硬件上就是对乘法器资源的复制。所以,在应用这种并行处理方法时,要权衡所需要的时钟频率和硬件(或软件)乘法器资源的耗费代价,适当选择并行路数。

前面以8阶滤波器为例子说明了时域并行处理FIR滤波器的原理,可将其推广到更高阶数和更多并行路数。设滤波器阶数为N,并行路数为L,则式(6)可以简化为:

y(n+k)=i=0(Ν-2)/2hi[x(n+k+i)+x(n+Ν+k-i)]+hΝ2x(n+k+Ν2)k=0,1,2L-1(7)

由式(7)可见,滤波器阶数越高,所需要的乘法器资源越多;并行路数越多,所需要的乘法器资源越多。虽然这种时域并行方式是以复制资源为代价,但在资源可满足的条件下,这种并行处理方式确是一种简单易行并可达到降低数据处理速度的方法。

8阶滤波器时域并行处理算法用Matlab软件进行了仿真测试,采用的是4路并行,并行处理的滤波器输出与串行结构滤波输出的误差在10-14量级,误差仿真结果如图3所示。

3 并行匹配滤波器的设计

随着集成电路技术的快速发展,实现高性能高速率的数字滤波器成为现实。大规模现场FPGA芯片内部有规整的内部逻辑阵列和丰富的连线资源,特别适合数字信号处理任务。随着FPGA速度的不断提高以及FPGA固有灵活性强的特点,基于FPGA实现的数字滤波器应用越来越广泛。因此采用了FPGA来实现高速的并行数字匹配滤波器。

利用赛灵思(XILINX)公司的FPGA实现了16阶并行匹配滤波器,能够工作的时钟频率达到250 MHz。16阶高速并行数字匹配滤波器主要由分路延迟锁存模块、乘系数模块和相加输出模块组成。

分路延迟锁存模块将输入数据按图2原理进行1分4路,并延时锁存一定的时钟周期,为的是能得到并行运算的所有输入数据。乘系数模块将分路得到的数据与滤波器系数相乘,按照时域并行滤波算法,16阶高速并行匹配滤波器应有4个乘系数模块,相加输出模块将4路并行处理的结果相加即为滤波器输出。

系统处理的数据速率较高时,数字匹配滤波运算速度的瓶颈就是乘法运算,在实现中采用FPGA内部的硬件乘法器,硬件乘法器处理速度可达上百兆,可以满足数字匹配滤波运算速度的要求。在相加输出模块中,有很多上级模块输出数据要同时做加法,如果不加处理,运算延时很大,影响整个模块的运算速度。所以要对多加数的加法运算采用流水线方式运算的方法,这样能减小运算延时,保证运算结果的正确性。在相加输出模块的加法运算后的结果是一个几十位的定点数,要根据仿真估算和实际试验选择截取位数。

在FPGA布局布线中要仔细调整布局布线的延时,以便能达到工作时钟频率的要求。可以采取对一些数据进行适当的锁存,或者对某些延时较大的线进行时序约束,以便能够满足工作时钟频率的要求。

16阶高速并行数字匹配滤波器在FPGA布局布线后,占用了934个的寄存器或锁存器,使用了7个18×18的硬件乘法器,同时使用了一个数字时钟管理器模块。

用硬件描述语言(VHDL)编写了并行数字匹配滤波器的程序代码,并下载到硬件平台进行了性能测试。在工作的时钟频率为250 MHz时,采用并行处理实现的数字匹配滤波器的系统要比使用模拟匹配滤波器的系统性能提升了1 dB,性能曲线图如图4所示。

4 结束语

在数字信号处理当中,数字匹配滤波器是一种重要的基本电路。用来对信号进行过滤、检测与参数估计等处理,在通信、图像、语音和雷达等许多领域都有着十分广泛的应用,随着数字信号处理的速度越来越高,对数字匹配滤波器的处理速度要求也越来越高,而基于时域并行处理的数字匹配滤波器方法简便、易行,因此在高速数字信号处理中将有很好的应用前景。

摘要:介绍了匹配滤波器原理,分析了匹配滤波并行处理的算法,提出了一种适合高速处理的并行数字匹配滤波器的设计方法。使用Matlab软件进行了仿真,根据仿真结果证明了此设计方法可行。给出了利用可编程门阵列(Field-Programmable Gate Array,FPGA)实现16阶高速并行数字匹配滤波器的方案,指出了实现的要点。在系统中进行了性能测试,结果表明,采用该并行处理算法实现的数字匹配滤波器适合高速信号处理。

关键词:匹配滤波,FPGA,并行处理

参考文献

[1]许金生.基于IPcore的FIR数字滤波器的FPGA实现[J].安徽工业大学学报,2007,24(3):309-313.

[2]卿敏,沈业兵,安建平.用FPGA实现数字匹配滤波器的优化方法[J].微计算机信息,2004,20(11):118-119.

多核DSP并行软件设计技术研究 篇9

DSP是一种用于数字信号处理的专用处理器, 且主要用于大量的并行数据计算。目前DSP已经广泛用于计算机、网络、移动通信及雷达等民用及军用领域。随着流媒体及数字信号计算需求的不断增大,DSP处理器设计已经向多核处理器迅速发展。德州仪器( TI) 在2010年11月发布了其最新的基于Keystone架构的8核DSP处理器C6678,每个内核的频率为1. 25GHz,能够提供每秒高达40GB的定点运算和20GB的浮点运算能力,一片C6678DSP芯片的内核频率为10GHz,理论上给以提供320G的定点运算和160G的浮点运算能力,是TS201S的50倍、C67x + 的115. 2倍[1]。拥有如此高的处理能力,C6678芯片或者C6678芯片阵列已经可以满足大部分数字信号处理任务的性能需要,同时也可以运用在对处理实时性要求较高的计算领域。

在对C6678 DSP进行多核并行开发与研究时, 如何进行核间通信及存储器的管理,是准确、高效的使用多个内核并行数据处理的关键。本文对德州仪器( TI) 提供的TMS320C6678进行研究与分析介绍, 在此基础上,简单介绍了基于此平台的AVS视频双核并行解码的实现。本文对TMS320C6678或者多核DSP的研究开发有一定的借鉴作用。

1德州仪器 TMS320C6678 的内核及 架构

TMS320C6678采用德州仪器 ( TI) 最新的KeyStone多核架[2],在一片TMS320C6678芯片中植入了8个处理器引擎。

处理器引擎采用的是TI在2010推出的全新TMS3320C66x数字信号处理内核,不仅为C64x指令集架构带来显著的性能提升,同时还在同一处理器内核中高度集成了针对浮点运算的支持。如图1所示,相比于前代内核C64x + ,C66x内核采用与之相同的内核结构( A&B) ,但是对于. M单元的乘法器个数由原来的4个变为现在的16个,从而实现内核原始计算能力4倍的提升。

芯片内每一个内核的的工作频率与芯片的时钟频率相同,最高可配置为1. 25G,理论上可以提供320G的定点运算能力和160G的浮点运算能力。同时每一个内核拥有相对独立的L1D、L1P和LL2 SRAM存储器,以及共享4M的共享存储器SL2 SRAM和最大支持8G扩展的DDR SRAM。

由多核导航器、Tera Net、多核共享存储器控制器和Hyper Link硬件单元组成的Key Stone架构保证了DSP可以并行处理数字信号,在功耗及制作工艺的限制下,可以快速提高芯片的处理能力。

图2为TMS320C6678并行处理器的的架构[3]。

2 并行软件设计的关键技术

2. 1 并行模式的选择

并行计算的主要模式分为主从模式和流水模式两种。

主从模式是由主处理器将处理任务及处理数据分配给一个或者多个从处理器,从处理器之间的工作相互独立,只受主处理器控制,对主处理器负责。这种模式比较适合相互无关的工作任务的处理。

流水模式是指多个处理器处理同一块数据,但是每个处理器进行不同的计算,数据由一个核流向另一个核,形成流水线模式。这种处理模式最大的挑战在于如何将一个任务均匀的分成若干个子任务,使每一个处理器达到平衡,同时,处理器之间频繁的数据交互及通信也会让工作效率受到影响。

单独的某一种并行模式已经无法满足当前复杂任务的要求。在软件设计中,越来越多地同时使用主从模式和流水模式。本文介绍的AVS双核视频并行解码实现即是混合使用了两种并行模式,由TMS320C6678的核0作为主处理器,核1和核2做为从处理器。核0将数据及任务分配给核1、核2 ,核1、核2工作既互相独立又互相制约,如图3所示。

2. 2 核间通信方式

2. 2. 1 基于 TMS320C6678 中断的通信方式

TMS320C6678是采用基于Key Stone架构的中断控制器INTC( Interrupt Controller)[4],多核处理器间可以通过触发中断服务程序完成通信。完成中断通信功能,首先需要配置中断向量表,启动CPU中断功能。

TMS320C6678内核间通过中断进行通信的过程如图4所示: ( 1) 由通信发起核通过事件控制器产生事件( EVENT91) ; ( 2) 触发中断控制器( INTC) 产生核间中断 ( INT4 ~ INT15) ( 在TMS320C6678中,核间中断默认对应91号事件,即EVENT91) ; ( 3) 产生的核间中断( INT4 ~ INT15) 通过之前配置好的中断向量表跳入中断服务程序( ISR) ,填写相应寄存器状态及通信消息; ( 4) 此时目标核中断触发,自动跳转到中断向量表中相应的入口点,读取相应的寄存器的状态,获取通信消息。

2. 2. 2 基于存储器地址标志位的通信方式

TMS320C6678的中断功能满足了用户软件设计的多种需求( 包括核间通信) ,但是使用中断功能就需要软件设计使用SYS /BIOS,增加软件设计的复杂度。对于部分软件设计来说,核间通信的时间、方式比较简单明确,因此可以采用对某一存储器地址做标志位赋值的方式进行核间通信。一般来说使用每个核对应的LL2( Local Level 2) SRAM内某一地址作为标志位。通过不同的地址申明方式,任何一个核都可以看见其他核的LL2SRAM上存在的值, 并且可以更改。通过这样的方式达到核间通信的目的。这种通信方式具有较大的局限性,但是对于核间逻辑相对比较简单的软件设计来说比较容易掌握和调试。

以core_0与core_1通信为例,可以使用core_1的LL2起始位置0x00800000的4个字节作为标志位。在core _1上,使用指令volatile int*flag _1 = ( int*) ( 0x00800000) ,将flag_1指向其所属的LL2起始位置。在core_0上,使用指令volatile int*flag_ 0 = ( int*) ( 0x11800000) ,将flag_0指向核1所属的LL2起始位置,此时,flag_0与flag_1指向的其实是同一存储器地址,在保证两核对此地址读写安全及逻辑互斥的前提下,就可以通过判断此标志位的值进行核间操作,达到简单的核间通信目的。

2. 3 多核存储器

2. 3. 1 TMS320C6678 存储器结构

在对多核设备进行编程设计时,必须要充分考虑到处理器与存储器间的模型。TMS320C6678芯片的8个内核,每一个内核对应的内部存储器, 分为:

32k L1D( Level 1 Data) SRAM,可用作普通的数据空间或者配置成数据cache。

32k L1P( Level 1 Program) SRAM,可用作普通的程序空间或者配置成程序cache。

512k LL2 ( Local Level 2) SRAM,可以作为数据及程序的存储空间,同时支持最大256k的cache。

同时,8个内核共享有4M的SL2( Share Level 2) SRAM,可以存放数据及程序和最大支持8GB扩展的DDR3 SDRAM。如图5所示,是每个核与芯片内部资源连接的结构[5]。

系统为每一个存储器设备都在存储器映射表中留有一个专门的地址,以便各个内核访问。对于内核的本地存储器( L1D、L1P及LL2) ,在映射表中都有两个入口,一个表示局部地址,供本地内核访问; 一个表示全局地址,供本地内核及其他核访问,如2. 2. 2节中所举例子。

2. 3. 2 存储器缓存一致性

在软件设计中,一般将LID、L1P及部分LL2 SRAM配置成cache缓存,以提高运行效率。在多核软件设计,如果每一个内核都按照以上方式设置cache缓存,则必须通过有效手段保持缓存的一致性,主要是数据的一致性。

在TMS320C6678中,唯一由硬件保证而不需要软件管理一致性的是同一内核中的L1Dcache缓存和LL2 SRAM。对于同一个内核,硬件可以保证LL2中的所有更新都可以映射到L1Dcache缓存中。

对于L2 cache缓存与外部存储器之间,硬件并不能保证数据的一致性,意味着必须通过禁用外部存储器的缓存映射或者引用TI提供的API函数进行软件维护,包括缓存无效( cache-invalidate) 、缓存写回( cache-writeback) 和缓存写回 - 无效 ( cachewriteback-invalidate) 。

同时,由于L2 cache缓存的操作均为对数据行操作,cache line的长度为128字节,软件设计必须使共享数据128字节对齐,以保证缓存API函数操作的正确性。

3 基于 TMS320C6678 的软件设计——— AVS 视频双核并行解码的实现

基于对以上内容的掌握,成功在TMS320C6678芯片上实现了AVS视频的双核并行解码。

实现双核解码的前提是成功完成AVS视频解码器在TMS320C6678平台上的移植,保证单核解码的正确性。

整体软件设计的系统流程如图6所示,一共使用TMS320C6678三个核,核0作为主控核,负责解码器的调度等功能,运行SYS/BIOS操作系统; 核1与核2作为解码核,完成解码器的具体任务,不带有操作系统。主控核0完成的任务包括: 解码前输入ES队列管理、对核1与核2的调度、解码后输出YUV队列管理。这样设计的优势在于: ( 1) 既可以调度完成双核并行解码,也可以配置成单核解码; ( 2) 用核0做主控核负责调度,可以在单片TMS320C6678上完成7路码流单核解码或者3路码流双核解码及一路码流单核解码; ( 3) 此方案使得核1 ~ 核7运行相同的工程,降低了软件设计的复杂度。

以一路视频码流双核并行解码为例,使用核0、核1、核2三个核,核0负责主控调度,核1及核2负责解码功能。其中既有主控核与解码核的通信及数据共享,也有两个解码核之间数据的共享问题,混合使用了3. 1节中提出的两种并行模式。在软件设计时,必须十分清楚解码器的逻辑关系和数据关系,保证共享数据的安全和缓存一致性,以及解码结果的正确性。

4 结束语

DSP技术的发展趋势是多重核心处理器[6]。未来,多核DSP芯片将运用在越来越多的领域,为更多的软件设计提供解决方案平台。在多核DSP软硬件设计领域,新的挑战也将不断出现。本文研究TMS320C6678的软硬件技术,并基于此实现了AVS视频双核并行解码软件设计,为多核DSP并行软件的设计提供了参考。

摘要:数字信号处理器(DSP)是对数字信号进行高速处理的专用芯片。单核结构的DSP已经不能满足信息行业发展的需求,多核结构DSP应运而生,同时,也为如何准确高效地利用多核处理器平台设计并行软件带来了挑战。文中主要基于德州仪器TMS320C6678平台,对多核DSP应用开发进行研究,并简单介绍了基于此DSP的AVS视频双核并行解码的实现。

并行计算机博弈系统设计与改进 篇10

随着并行计算技术和框架的日益成熟,搭建并行计算环境并非难事。对于博弈并行计算来说,如何设计更好的并行算法模型,以尽量减少三种额外开销称为了关键问题。在大多数系统实践中,由于无法很好的避免额外开销,在多核计算中系统的加速比较低,甚至在计算核数达到一定数量后,加速比会出现负增长,这使得博弈计算的进一步提速遇到了瓶颈。

2 单核搜索算法简介

早期的博弈程序大多会展开一棵完整的博弈树。尽管Alpha-Beta等思想利用启发式信息对博弈树的实际展开进行了剪枝,但逻辑上仍然是展开了一棵完全树。随着计算机博弈研究的进展,学者认为原有的搜索方法不能体现人类智能在下棋中的思维习惯。上世纪80年代出现了选择性搜索的思想,这一思想更有助于提高搜索效率,因此逐渐成为主流方法。本章主要介绍计算机博弈单核条件下选择性搜索的基本思想,以及选择性搜索算法的代表——1997年著名弈棋机“深蓝”使用的“DC延展搜索”。在此基础上,针对“DC延展搜索”的缺陷提出改进方案,并给出了这一改进的实验结果。

3 博弈并行搜索模型研究

博弈中的并行计算是为了加强计算机的运算能力,从而获得更强的智能表现。在以搜 索为主结 构的博弈 系统中,并行计算 模型主要 是指对AlphaBeta搜索进行 分解,也即并行AlphaBeta搜索。目前主要的做法有顶层分支模型、PVS(Principle Variation Splitting)、YBWC(Young Brother Wait Concept) 等。这些算法本身并不涉及实现方式,但为讨论方便,下文在提及这些算法及其改进的时候,都是以多线程实现为例。

3.1 顶层分支并行模型

3.1.1顶层分支模型简介

顶层分支模型,即将博弈树根结点的所有子结点交付不同线程进行计算。这种做法其实几乎完全放弃了通信,因此通信开销几乎是零。然而相对应的,造成了大量的搜索开销,每个并行分支的平均剪枝效率远小于串行搜索。由于分解粒度较粗,各分支内部的搜索速度也可能很不均衡,会造成一些线程早早结束工作,而另一些线程则慢很多的现象,这样造成的同步开销也比较大。

3.1.2顶层分支模型的缺陷

顶层分支模型存在三个主要缺陷。

1. 负载不均衡

2. 搜索开销较高

在串行Alpha-Beta搜索中,窗口的搜索小是造成剪枝的原因,从而减少搜索结点数。在基础顶层分支并行模型下,由于各子树分别维护一个搜索窗口而无法共享,因此各子树剪枝率均小于等于串行搜索下的剪枝率。

3. 并行能力受到分支因子限制

对于一个给定的游戏,其每个局面下的着法是有一定范围的,如中国象棋一般不超过60个着法。如果此时的可用核数超过60,则有一部分核无法得到利用。

3.1Principle Variation Splitting(PVsplitting)

对于顶层分支模型的最早的改进是PV分解(Principle Variation Splitting)。PV分解模型将搜索树中的每个结点按Knuthand Moore[6] 提出的分类方法进行分类 :

PV结点——根结点以及每个PV结点的第一个子结点

CUT结点——PV结点除第一个孩子外的所有结点,以及所有ALL结点的所有孩子

ALL结点——CUT结点的第一个孩子

其他结点——所有不符合上述定义的结点

3.2 改进的顶层分支模型

在目前主流的计算机博弈系统中,很少有采用PVS与YBWC模型的,大多数还是采用顶层分支模型。原因是PVS与YBWC虽然在理论上是成功的,但在实际操作中会造成更多的控制与分配开销,且带来的改进效果受不同棋种、不同系统自身特点影响,在很多系统中实际效果与基础顶层分支模型相差不大。而顶层分支模型简单、易于根据不同系统的特点进行改进,为大多数系统所采用。

3.3 动态延展

顶层分支模型只在顶层对所有子结点进行搜索。这里对这一做法加以扩展,得到动态延展的方法。

对于给定的空闲核数n,游戏的分支因子为b,则从根节点展开k层,使得bk≥n,然后再将所有的以叶子结点为根节点的子树按上述动态分配方法,分配给空闲核进行计算。可以看出,原有的顶层分支模型是这里的一个特例,即n较小,使得k为1时即满足条件并展开。

动态延展不仅是用以应对大规模并行的需求。这种方法的实质是减小了工作的粒度,配合后面将要提出的“动态分配着法”以及“共享高层窗口”的改进,可以有效的减少同步开销,并在通信开销和搜索开销之间取得较好的平衡。

4 结论

博弈并行计算目前的研究主要是对于博弈树进行并行分解,这一做法确实有较大的瓶颈,每一点改进都较艰难,且效果并不显著。然而,如果将博弈并行的重心放在对博弈中复杂运算函数的并行,将能取得很明显的效果。本文工作结束后,作者开始尝试使用多显卡技术和多CPU技术融合,实现双并行的结构,将博弈树分解交给CPU处理,而运算函数的并行则在GPU中。

摘要:计算机博弈的核心技术是搜索。本文针对单核条件下的搜索算法、并行条件下的搜索算法两个方面进行了研究。单核搜索算法方面,简单地介绍了博弈单核条件下的选择性搜索思想,本文研究了几种已有的多核条件下博弈并行搜索方法,分析了其优劣,并针对性地提出了改进方案,给出了系统实践的结果,比较了改进方法与原有方法的效果差异。最后,本文探讨了Alpha-Beta并行搜索系统实现中一些特殊的程序设计技巧。

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:艾滋病高危人群范文 下一篇:臀位分娩