并行实现

关键词: 进化 人工智能 模拟 算法

并行实现(精选十篇)

并行实现 篇1

在某视频图像的采集存储系统中,采编器将接收到的视频数据编帧后送至存储器进行存储,通过测试台将数据读回上位机后还原为图像,从而对试验过程中的状态进行分析。在现场测试时,测试台通过长线与采编器相连,由于测试环境干扰较多,传输线距离较长,使得信号在长线中传输时容易受到影响而导致数据错误,数据还原为图像后就会产生失真,从而无法得到一些重要信息,因此保证信号在长线中的可靠传输尤为重要。本文针对长线传输中的问题,从硬件电路和时序两方面进行设计,实现了图像信号在并行长线中的稳定传输。

1 硬件电路设计

1.1 并行长线传输原理

并行长线将测试台和采编器相连,主要实现上位机命令的发送及存储器数据的回读,其传输原理框图如图1所示。上位机软件发送命令经过USB传输到测试台主控卡,经过测试台主控卡FPGA控制发出后再通过50 m长线传输到采编器主控卡,然后采编器与存储器按照控制逻辑执行命令。当上位机发出读数请求命令后,存储器中数据由采编器控制,经过长线传输到测试台,然后测试台控制其读回上位机。

1.2 接口电路设计

图2所示为并行长线传输的接口电路,对于长线数据Ldata和长线读时钟Lclk,其传输方向由采编器到测试台。

由于长线距离较长,因此在发送端和接收端之间存在地电位差,引起地环路电流,从而形成差模干扰。通过采用光电隔离技术[1],将发送端和接收端的电气连接断开,提高了长线传输模块的抗干扰能力。同时,在长线两端均采用光电隔离,使得长线“浮地”[2],减少了因两设备间多点接地而造成的共模干扰。

在接口电路设计中,由于长线分布电容的影响[3],输出端光耦上拉电阻R4的选择成为电路设计的关键。如果选择的上拉电阻阻值不合理,长线分布电容与光耦上拉电阻的充电现象就会使得信号波形在上升沿时发生严重畸变,对于长线读时钟和数据而言,这种畸变会引起较多的误码现象。图3为上拉电阻分别在3.3 kΩ和330 Ω时的时钟和数据波形。图3a是上拉电阻R4为3.3 kΩ时长线读时钟和数据的对应波形图,由于时间常数t=RC,使得电路充电时间过长,从而导致上升过程中爬坡时间太长,很大程度上引起数据误码率的增加。经过调试,上拉电阻为330 Ω时,长线读时钟和数据波形得到很大改善,能够保证数据可靠、正确地传输,其波形图如图3b所示。

1.3 传输线的反射干扰

50 m传输线由于穿舱需要被分为A,B,C,D共4段,其中B,C两段传输线长度不能改变,分别为5 m和30 m,A,D的长度在保证总传输线长度不变的情况下可调。4段之间用J14A-26和YF6-57系列接插件进行连接,其连接方式如图4所示。

在试验过程中,当A段传输线长度为1 m,D段传输线长度为13.4 m时,按图4连接好长线进行数据传输,在接收端接收到的长线读时钟和数据的波形如图5a所示。从图中可以看出,时钟和数据均发生严重畸变,读回的数据经上位机软件分析后发现严重丢数。而当A段传输线长度为13.4 m,D段传输线长度为1 m时,数据传输正常,其波形如图5b所示。

经过分析发现,当信号在图4长线电缆中进行传输时,由于其传输路径分为4段,而每一段传输线均有相应的瞬态阻抗,当信号传输到两段传输线的接插件连接处时,由于瞬态阻抗发生变化,从而引起信号在阻抗不连续点处的反射。反射的强弱程度可以通过反射系数的大小来表示,将反射系数定义为

K=(Z2-Z1)/(Z2+Z1) (1)

式中:K为反射系数;Z1为输入阻抗;Z2为输出阻抗。当Z1<Z2时,称其为欠阻尼状态,而当Z1>Z2时,称其为过阻尼状态[4]。在工程设计中,由于传输线瞬态阻抗影响,完全使Z1=Z2,即临界阻尼状态很难满足,因此最常用的方式是设计为轻微的过阻尼状态。对图4的连接方式进行反射建模分析,其反射模型如图6所示。

当按照A=1 m,B=5 m,C=30 m,D=13.4 m进行连接时,各段传输线的瞬态阻抗关系为Za<Zb<Zd<Zc。根据式(1),AB反射面和BC反射面的反射系数较大且为正,而CD反射面的反射系数较小且为负。此时,AB和BC反射面均为欠阻尼状态,1 m传输线和13.4 m传输线使得反射面的反射增强,对信号传输影响较大,因此造成图5a的波形畸变。将1 m传输线和13.4 m传输线对换连接后,传输线阻抗匹配使得反射减弱。

2 长线传输时序的抗干扰设计

2.1 长线传输时序设计

图7为长线传输时序示意图,图中Lreq为长线读数请求,Lclk为长线读时钟,D0~D7为8位并行数据,在数据位中,数据在t1时间段进行转换,在t2时间达到稳定。

在实际传输过程中,8位数据经长线传输后,使得数据不稳定时间增加,对应图7中t1时间段变长,t2时间段变短。图8为对长线传输前后的4位数据D0~D4进行测量的波形,图8a为传输前的4位数据波形,从图中能够看出,4位数据几乎同步变换,其不稳定时间长度为54 ns。而从图8b中经长线传输后的数据波形能够看出,数据位变换不同步,使得数据不稳定时间长度增加到145 ns。本设计的系统时钟由40 MHz晶振提供,其周期T=1/(40 MHz)=25 ns,图8b数据不稳定,周期个数为145/25≈6个,而读数是在长线读时钟的上升沿进行的,为了保证数据传输的正确,只有增加长线读时钟周期,使得数据稳定时间增长,才能保证数据的正确。因此,长线传输时序的设计关键是对长线读时钟进行调试,达到传输速度和传输距离的最大匹配。

2.2 读时钟消抖

为了提高读时钟的抗干扰能力,长线读时钟的消抖是必须的。本文采用延时比较法进行消抖,其基本原理为:在数字信号产生由1到0或者由0到1的跳变时,只有在其跳变电平保持连续的N个系统时钟时才对其进行采样,否则将该跳变作为抖动消除,保持原来电平不变。长线读时钟消抖流程如图9所示。

消抖使得波形产生延时,延时时间由为N个系统时钟,消抖计数N的值是影响消抖成败的关键,图10给出了消抖失败引起的两种数据错误的仿真时序。图中fosc为系统时钟,Lrdclk为消抖前的长线读时钟,Lrdclk为消抖后的长线读时钟,Ldata为长线数据。对于图10中上方仿真图,Lrdclk的高电平部分被两个抖动分为3部分,当最长的高电平持续时间低于消抖计数时间时,有效电平被作为抖动消除,消抖后时钟缺少一个上升沿,从而引起数据的丢失。对于图10所示仿真图,Lrdclk的高电平部分被抖动分为两部分,当两部分中较小的一部分的持续时间低于消抖计数时间时,该部分被作为抖动消除,抖动的上升沿被延时到数据的不稳定时间区域,在该区域取数就会产生数据的误码。因此,消抖计数个数必须调试后确定,在本设计中,N的值为6时达到消抖效果。

3 实验验证

并行长线传输技术接口电路简单、工作稳定,能够满足测试距离和测试速度的要求。本文介绍的并行长线传输速度快,抗干扰能力强,在电磁设备较多的试验环境中,成功保证了4 Gbyte图像数据在1 Mbit/s的传输速度下稳定传输。长线读时钟与系统时钟的波形如图11所示。图11中,在40 MHz晶振提供的系统时钟周期下,每40个系统时钟周期产生1个长线读时钟,因此长线读时钟的频率为1 MHz,而图像数据的读取是在每个长线读时钟的上升沿进行的,因此图像数据的传输速度为1 Mbit/s。

参考文献

[1]宋晓明,陈方斌,刘鑫.光电耦合器在并口长线传输中的应用[J].电子设计工程,2009,17(5):124-126.

[2]徐瑛,叶璐.实现数据长线传输的方法[J].煤矿自动化,2000(1):13-14.

[3]李永敏,罗麟经,林燕珊.提高长线传输数字波形质量的技术措施[J].南京航空航天大学学报,1998,30(1):106-109.

并行实现 篇2

关键词:DSP 自动目标识别(ATR) 并行算法 处理器 软件设计

自动目标识别(ATR)算法通常包括自动地对目标进行检测、跟踪、识别和选择攻击点等算法。战场环境的复杂性和目标类型的不断增长使ATR算法的运算量越来越大,因此ATR算法对微处理器的处理能力提出了更高的要求。由于通用数字信号处理芯片能够通过编程实现各种复杂的运算,处理精度高,具有较大的灵活性,而且尺寸小、功耗低、速度快,所以一般选择DSP芯片作为微处理器来实现ATR算法的工程化和实用化。

为了保证在DSP处理器上实时地实现ATR算法,用算法并行化技术。算法并行化处理的三要素是:①并行体系结构;②并行软件系统;③并行算法。并行体系结构是算法并行化的硬件基础,并行算法都是针对特定的并行体系结构开发的并行程序。根据DSP处理器的数目,ATR算法的并行实现可以分为处理器间并行和处理器内并行。处理器间并行是指多个DSP处理器以某种方式连接起来的多处理器并行系统,ATR算法在多个处理器上并行招待。根据处理器使用存储器的情况,多处理器并行系统又可分为共享存储器多处理器并行系统和分布式多处理器并行系统。处理器内并行是指在单个DSP处理器内通过多个功能单元的指令级并行(ILP)来实现ATR算法的并行化。本文分别对在共享存储器多处理器并行系统、分布式多处理器并行系统和指令级并行DSP处理器上并行实现ATR算法进行了探讨。

1 在共享存储器多处理并行系统上实现ATR算法

在共享存储器多处理器并行系统中,各个处理器通过共享总线对所有的存储器进行操作,实现各个处理器之间的数据通信。而在任一时刻,只允许一个处理器对共享总线进行操作。所以处理器对存储器进行读/写操作时就必须先获得对共享总线的控制权,这通过总线仲裁电路实现。然而,由于所有的处理器只能通过一条共享总线对存储器进行访问,这在处理器数目比较多或者处理器之间频繁交换数据的情况下容易引起总线冲突和等待而降低整个并行系统的运行速度。共享存储器多处理器并行系统的优点是结构简单,当处理器的数目较少时,可以达到较高的加速比。

ADSP2106x处理器支持最为常用的共享存储器多处理器并行系统,组成多处理器系统的每一片ADSP2106x的片内存储器统一编址,任一ADSP2106x可以访问其它任何一片ADSP2106x的片内存储器。由于片内SRAM为双口存储器,因而这种访问并不中断被访问处理器的正常工作。每个处理器片内SRAM既是该处理器的局部存储器,又是共享存储器的部分。在不增加辅助电容的情况下,通过外部总线接口直接相连的处理器数量最多为6个。由于每个处理器的工作程序放在其片内的双口SRAM中,因此各个处理器可以实现并行处理,这是ADSP2106x的存储器结构所决定的。

ATR算法在共享存储器多处理器并行系统中实现时,在编写并行算法程序方面应当重点考虑的问题包括:

(1)均衡地把任务分配给各个处理器

ATR算法在共享存储器多处理器并行系统中实现任务级并行,因此必须把ATR算法划分为计算量均衡的多个任务,把各个任务分配给多个处理器,才能发挥多处理器并行系统的最大并行效率。

(2)尽量减少多处理器之间数据通信

由于多处理器只能通过一条共享总线对存储器进行访问,这在多处理器之间频繁交换数据的情况下容易引起总线竞争而降低整个并行系统的运行速度。

(3)利用单个处理器的并行编程特性

并行实现 篇3

承包权证发放范围及权能。承包权证颁发给家庭承包农户,承包权人享有承包地被依法征用、占用相应补偿权、依法转让或者互换承包权及法律、法规和政策规定的其他权利。

经营权证发放范围及权能。承包农户自行经营的,经营权证颁发给该承包农户;对于经营权流转、但未改变承包关系的,将经营权证通过变更登记的方式颁发给流转方。经营权人享有土地的生产经营自主权、依法流转土地经营权、依据国家和省有关规定抵押、担保土地经营权以及法律法规和政策规定的其他权利。

并行量子进化算法的研究与实现 篇4

进化计算是一类模拟生物进化过程与机制求解问题的自组织、自适应人工智能技术,进化算法[1,3,5,6,8]是模拟自然进化过程而产生的一类随机搜索技术,已在人工智能、神经网络及众多的工程应用领域中显示了其解决复杂问题的特别能力。笔者也曾对算法进行改进,提出基于免疫原理的量子进化算法[2](MQEA),并基于Markov随机过程理论,证明了此算法的收敛性。

但无论如何对于大规模或超大规模的求解任务,串行进化算法显然力不从心。进化算法具有天然的并行性,非常适合于在大规模并行计算机上实现,而大规模并行计算机的日益普及,为并行进化算法PEA(Parallel Evolutionary Algorithm)奠定了物质基础。目前典型的并行进化算法主要有全局、粗粒度和细粒度等几种.近些年,许多学者在这方面做了大量研究[4,7]并取得了可喜的进展。然而,如何突破通信瓶颈,充分发挥硬件资源,提高算法性能以及如何使并行进化算法具有更好的可扩展性等问题依然困扰着并行进化算法的进一步发展。

本文分析讨论了并行进化模型理论及性能,将量子的多宇宙特性和进化算法相结合,提出了基于学习的多宇宙并行免疫量子进化算法,算法中将种群分成若干个独立的子群体,称为宇宙。并给出了多宇宙的并行拓扑结构,提出了宇宙内采用免疫量子进化算法,宇宙之间采用基于学习的移民和模拟量子纠缠的交互策略进行信息交换。即在多宇宙并行结构中,宇宙中个体向着各自的目标演化,宇宙之间采用基于学习机制的移民和模拟量子纠缠的交互策略交换不同进化环境下的优秀个体和优秀模式,这样能提高种群多样性有效克服早熟收敛现象,使得搜索效率和搜索能力得到更进一步提高。我们用典型的测试函数验证了算法的并行效果。

1 并行计算模型及理论

使用并行计算机解决一个应用问题时,并行算法的设计是非常重要的。而并行算法最终要成为一个由程序实现的结构依赖的算法,就特别需要一个抽象的并行计算机结构作为研究高效的结构依赖性算法的基础,以保证并行算法适应于广泛的并行计算机结构,并能够依照抽象的结构分析并行算法的效率,以及指导与并行机结构相匹配的并行算法的设计。并行计算模型就是为并行算法的设计、分析而研究出的并行计算机的抽象结构。

当前对进化计算所进行的理论研究工作主要包括如下几类:表示理论、操作子理论、结构化算法、收敛性理论、适应值景象理论、一致性理论、工作模型理论和物种形成理论与小生境,其中,结构化算法、一致性理论与工作模型理论和并行进化计算直接相关。无论是串行算法还是并行算法,计算复杂性都是算法效率的度量尺度,是评价算法优劣的重要依据。一个算法复杂性的高低体现在运行该算法所需要的计算机资源的多少上面,所需的资源越多,算法的复杂性越高;反之,所需的资源越少,则算法的复杂性越低。下面我们介绍度量并行算法性能的一些基本概念:算法复杂度、加速比和效率等。

1) 运行时间

定义1 并行算法的运行时间是指算法在并行计算机上求解一个问题所需的时间。即表示算法开始执行到执行结束的这一段时间。如果多个处理机不能同时开始或同时结束时,则算法的运行时间定义为:从最早开始执行的处理机开始执行算起直到最后一台处理机执行完所经过的时间。

2) 加速比和效率

并行加速比是表示采用多个处理器计算速度所能得到的加速倍数。设tseq表示用串行机求解某个计算问题所需的时间,tp是用P处理器求解该问题所需的时间。

定义2 并行加速比Sp=tseq/tp,这里tseq是表示用串行机求解该问题所需的时间。并行程序的效率定义为:Ep=Sp/p,其中P处理器个数,加速比Sp接近P时,效率易接近于1,影响并行效率的因素很多。

2 并行免疫量子进化算法研究

MQEA引入了量子比特的概率描述和量子旋转门演化机制,通过应用免疫算子能有效地提高算法的运算效率,但MQEA并没有利用生物界物种演化的并行及小生境特点。本文提出了多宇宙并行免疫量子进化算法(MPMQEA)。MPMQEA采用多宇宙并行结构,不同的宇宙向着各自的目标演化,宇宙之间采用基于学习的移民和模拟量子纠缠的交互策略交换信息,具有比MQEA 更快的收敛速度。

2.1 多宇宙并行拓扑结构

并行算法的基本思想是将一个复杂任务分解为多个较简单的子任务,然后将各自任务分配给多个处理器并行执行求解.PEA的三种基本模型:全局并行模型、粗粒度模型和细粒度模型。MQEA 的内在并行性使得它特别适合粗粒度的并行计算。粗粒度模型又称作分布式模型或孤岛模型.是目前最流行的一种并行进化算法.它将整个种群划分为多个子种群,每个子种群独自运行一个串行进化算法。在每个子种群内部进行选择、交叉、变异等遗传操作,且每经过一定遗传代数再在各子种群间交换优秀个体(迁移算子)来丰富各子种群的多样性,减小了未成熟收敛的可能性。

在PEA中,一个重要问题是如何降低通信开销,包括:1)迁移率的确定;2)拓扑结构的确定;3)迁移间隔,表示两次迁移之间间隔的演化代数;4)迁移策略。这4个主要参量对迁移的效果和性能起到不同程度的作用,共同决定了迁移算子的行为特性。其中拓扑结构对并行遗传算法的整体性能是非常重要的,它控制着优质遗传信息在各个子种群中的传播方式和速度,也就影响了整个算法的收敛速度。许多学者试图通过比较在不同的拓扑结构上并行进化算法的实验结果寻求算法性能的提升[7]。粗粒度模型中,采用随机选择方式来进行岛屿之间的迁移缺乏一定的导向,不利于各岛屿向着自己最有利的方向发展。

本文采用改进的粗粒度模型,如图1所示。在各宇宙中选择一虚拟服务器,称为master种群,其余处理器称为slave种群,master种群保存各slave种群中的优秀个体。slave种群和master种群间迁移优秀个体,形成星状结构,而各宇宙的master服务器以环状相连,这样可以有效减少在各宇宙间的通信开销。特别是基于学习的个体迁移能引导各宇宙向着自己最有利的方向发展。

2.2 多宇宙之间信息的交换

本文采用基于学习的移民(图2)和模拟量子纠缠的交互两种策略来实现多宇宙之间信息的交换。 通过各宇宙之间的移民和交互,使得一个宇宙内的信息发生变化,能迅速引起其他宇宙的信息发生变化。

2.2.1 宇宙间学习算子

宇宙间学习算子是通过控制slave种群内部部分个体对master种群的全局最优模式的学习来实现的。基于学习的个体迁移策略,能根据种群的平均适应度调节学习频率。通过slave种群向master种群迁移最优个体以及低平均适应值的slave种群向master种群的优秀模式学习加快了算法的收敛进程。考虑到算法本身的仿生学特征,利用生物学的观点解决群间学习频率的选取问题。当一个种群的平均适应度较低时,该种群为了赶超其他种群,应更有必要向优秀模式学习,因此设定低平均适应度的种群的群间学习频率高。

宇宙间学习操作算法如下:

1) 生成[0,1]之间的随机数rand,如果rand<Ps(Ps为slave种群的学习频率),则执行下面的操作;

2) 向master发送宇宙间学习请求,在可能的情况下获取master上的全局最优模式;

3) 计算宇宙中个体的适应度,并调整Ps,Ps可如下计算:

Ρs=μmaxfitnessavefitnessmaxfitnessminfitness

maxfitness,minfitness,avefitness分别为宇宙中的最大适应度,最小适应度,平均适应度,μ为调整系数,一般取1.0。

2.2.2 种群交互

在MPMQEA 中最能体现各宇宙结构信息的是各宇宙的演化目标。于是我们提出了一种种群交互操作。通过在两宇宙之间暂时交换各自的演化目标,使得本宇宙的结构信息有效地传递给另一参加交互的宇宙,并对对方宇宙的演化方向产生影响,同时本宇宙也从对方宇宙的演化目标中获得对方的演化信息。具体实现如下:

(1) 按确定的选择概率从宇宙中选取若干个体;

(2) 再随机选取若干其他宇宙,分别以各宇宙的演化目标作为若干个体当前的演化目标,对个体进行一次量子旋转门演化操作;

(3) 重复(1)和(2) 操作,直至全部宇宙都进行量子纠缠交互操作。

移民操作和量子交互操作都可实现宇宙间信息的交互,但两者侧重点不同。前者是将最佳个体按确定的拓扑结构和移民策略,在各宇宙中传递;后者是将各宇宙的演化目标通过量子交互的方式进行交互。 两者相辅相成,使得整个系统的收敛速度加快,运算效率提高,且能有效地避免早熟收敛。

2.3 多宇宙并行免疫量子进化算法的算法流程

MPMQEA算法的具体步骤如下:

1.初始化各宇宙中的所有子种群:按照宇宙的数目将整个种群分成若干个子种群,并将所有的子种群进行初始化。

2.选择一master种群作为虚拟主服务器,其余种群为slave种群。

3.进入循环:

(1) 每个子种群单独进化若干代。

(2) 在master种群和slave种群之间执行基于学习的移民,在宇宙间执行模拟量子纠缠的交互。

(3) 重新循环,直至规定的遗传代数或演化目标。

MPMQEA所需的种群规模小,只需在master种群和slave种群间迁移最佳个体,从而通信开销很小,master种群能及时获得全局最佳个体。若计算规模大可以选择多个master种群,各master种群间以环形结构相连,master种群中可再选择一种群作为虚拟主服务器,以交换和保存各master种群中的最优个体。slave种群需要学习时可获取此master种群中的最优个体。

3 实验结果及分析

本文选取了Ackley函数f1,对多宇宙并行免疫量子进化算法(MPMQEA)的并行性能进行测试。

f1(x1,x2)

=-c1exp(-c212i=12xi2)-exp(12i=12cos(2πxi))+c3+e

c1=20 c2=0.2 c3=20 e=2.71282

f1是一个多峰值函数具有许多的局部极小点,其中只有一个是全局极小点,全局极小值为f(0,0)=0。利用传统的优化方法往往容易陷人局部最优,因此该函数成为进化算法能否实现全局最优搜索的测试函数。局域网的普及为并行性能的测试提供了平台,我们将种群分成若干子群,每个子群在局域网的一台PC机上运行,表1为实验结果。

由表1 可以看出多个子群并行执行可显著减少执行时间,例如:3个结点比一个结点的总执行时间减少43秒,但是当子群数目继续增加时,执行时间几乎不再减少,例如:8个结点比4个结点的总执行时间仅仅减少2秒,因为子群数目太多则结点间的通信代价会急剧增加。实验表明子群数目一般为3至5个效率较高。

4 结束语

分析讨论并行进化模型理论及性能,结合笔者曾经提出的基于免疫原理的量子进化算法,又设计了多宇宙并行免疫量子进化算法(MPMQEA),MPMQEA所需的种群规模小、收敛速度快、运算效率高且能有效地避免早熟收敛,基于学习的移民和模拟量子纠缠的交互策略导致通信开销很小。我们用典型的测试函数验证了它的并行性能。接下来要进一步充分挖掘和利用量子的并行机制,探索更高效合理的并行进化模型,研究其中参数(包括子群数目)设置的合理性

摘要:分析讨论并行进化模型理论及性能,提出了基于学习的多宇宙并行免疫量子进化算法,算法中将种群分成若干个独立的子群体,称为宇宙。并给出了多宇宙的并行拓扑结构,提出了宇宙内采用免疫量子进化算法,宇宙之间采用基于学习的移民和模拟量子纠缠的交互策略进行信息交换。这样能提高种群多样性,有效克服早熟收敛现象。算法综合了量子计算的天然并行性和免疫算法的充分自适应性,它比传统的进化算法具有更好的种群多样性,更快的收敛速度。通过并行实验验证了该算法的优越性。

关键词:并行进化模型,量子进化算法,免疫算子,交叉变异

参考文献

[1] Narayanan A,Moore M.Genetic quantum algorithm and its application to combinatorial optimization problem.In Proceedings of the 1996 IEEE International Conference on Evolutionary Computation,IEEE Press,1996:61-66

[2]You XM,Shuai DX,Liu S.Research and Implementation of QuantumEvolution Algorithm Based on Immune Theory.In Proceedings of the6th World Congress on Intelligent Control and Automation,2006,Ac-cepted for publication.

[3] Han K H,Kim J H.Quantum-Inspired Evolutionary Algorithms with a New Termination Criterion,Hε Gate,and Two-Phase Scheme.IEEE Transactions on Evolutionary Computation,IEEE Press,2004(8):156-169.

[4]Fukuda T,Mori K,Tsukiyama M.Parallel search for multi-modal func-tion optimization with diversity and learning of immune algorithm.Arti-ficial Immune Systems and Their Applications.Berlin:Spring-Verlag,1999:210-220.

[5]Mori K,Tsukiyama M,Fukuda T.Adaptive scheduling system inspiredby immune systems.In Proceedings of the IEEE International Confer-ence on Systems,Man,and Cybernetics,San Diego,CA,12-14 Octo-ber,1998:3833-3837.

[6]Ada G L,Nossal G J V.The clonal selection theory,Scientific Ameri-can,1987,25:50-57.

[7]Enrique A,Jose MT.Improving flexibility and efficiency by adding par-allelism to genetic algorithms,Statistics and Computing,2002(12):91-114.

并行实现 篇5

江苏公务员&国家公务员历年真题库

2015江苏公务员考试【行测技巧汇总】 2015江苏公务员考试【申论技巧汇总】 2015江苏公务员【公基知识汇总】 2015江苏公务员历年考情分析

江苏公务员考试网:据了解,职务与职级应该是相对独立、相对分离的。职务反映职级,职级对应一定的职务。从功能上来看,二者的区别在于,职务的设置给公务员带来权力以及责任 义务的承担,职级的设置给公务员带来物质利益以及职业尊严的满足。推行职务与职级的并行,实质是使职级真正成为公务员的一条独立的职业发展阶梯。那些不能 晋升职务的公务员,也可以通过晋升职级获得合理的待遇和尊严。

据统计,我国县、乡两级公务员占全国公务员总数近60%。受机构规格和领导职数的限制,县、乡两级绝大多数公务员退休之前都解决不了副主任科员的待遇。

目前全国约有省部级现职官员3000人,据估算,公务员队伍中能晋升到省部级的比例仅为万分之四。

有研究表明,从科员到县处级干部的升迁比例仅为4.4%,从县处级升迁为厅局级的比例更是低至1%。有的人工作几十年还是副科长

根据有关统计,目前各地公务员工资的四个组成部分,职务工资约占20%,级别工资约占25%,地区附加津贴约占45%,各种补贴约占10%。职务工资比例虽不高,但由于地区附加津贴基本按照职务发放,所以实际占了近七成。

(本文来源于网络,仅供参考)

探讨容错并行虚拟机原型系统的实现 篇6

1 容错并行虚拟机原型系统的体系结构

FTPVM原型系统体系结构如图1所示。其中SPTC (single processes tree checkpo inting) 单元是在LINUX操作内核内实现单进程树检查点设置的模块。整个系统建立在一个由PC机组成的集群之上。在集群系统中实现检查点卷回恢复技术时, 应该采用镜像平均存储策略, 即以一定的原则选择备份机, 使各节点的镜像节点是均衡分布的, 这样既保证负载均衡, 又避免了瓶颈, 能够更好地实现容错。

2 容错并行虚拟机原型系统的实现

2.1 检查点的恢复

在发生故障后, 检查点的卷回恢复过程可以分为两个阶段:派生阶段和重新加入阶段。

第一阶段:派生阶段。M_pvmd (pvmd) 读取全局检查点文件, 根据文件提供的信息分别在备份节点和其他正常节点机上重新启动用户进程, 重新启动用户进程的过程就是根据单进程检查点文件卷回恢复进程到上一个检查点时刻继续执行。

第二阶段:重新加入阶段。在各个进程成功的卷回恢复后, 重新加入到并行虚拟机PVM中, 但这时还不能马上恢复计算任务。所其中涉及到的主要数据结构如下描述。

(1) Pvmgs返回消息GSLS的结构。

int ngroups//任务组总数

GROUP_STRUCT*groups//存放任务组信息的数组

(2) 同步请求消息DXB_SYN的结构。

int ntids//同步任务数

int*t ids//存放同步任务TID的数组

(3) 任务重新加入PVM消息DXB_RJN的结构。

int otid//任务最早的任务标识符

int ct id//任务当前的任务标识符

(4) 消息路由表更新消息DXB_LST的结构。

int count//表中元素的个数

int otids[count]//由最早的任务标识符tid组成的表

int ntids[count]//由最新的任务标识符tid组成的表

2.2 故障检测和处理

故障在这里主要是指节点机故障, 同时我们假定节点机发生故障和节点机不可达属于同一种情况。在FTPVM原型系统中沿用了PVM原有的故障检测方法。PVM原有的故障检测方法非常巧妙, 它结合心跳法和捎带法两者的优点, 能够及时地检测节点机的故障, 同时又不会明显增加系统的负担[2]。在节点机之间的一般通信中, 即pvmd-pvmd之间的一般通信中, 如果发送的某个消息在规定的时间内无应答, 则可以断定目的节点故障。

PVM中断定一个节点机故障所需要的时间同具体的应用相关。在通信密集型应用中, 主要由D D M I N T I M E O U T决定:在计算密集型应用中, 主要由DDPINGTIME决定。D D M I N T I M E O U T等于D D M I N R E T R I E S*D D M A X R T T*。其中D D M I N R E T R I E S是pvmd-pvmd通信中的最小重发次数, 默认值为10;DDMAXRTT是pvmd-pvmd通信中的最大等待时间, 默认值为9秒;是一个系数, 默认值为2。所以在默认情况下, DDMI N T I M E O U T等于1 8 0秒。

FTPVM原型系统的节点机故障处理是在PVM原有的故障处理之上新增加了任务检查点恢复模块。故障处理模块的算法描述如下。

3 结语

并行虚拟机PVM是当今最流行的并行计算环境之一, 本文在保留原有PVM优点的基础之上, 提出融入检查点技术的FTPVM原型系统的设计方案。FTPVM系统都能够自动采用检查点卷回恢复CRR技术在集群内恢复故障进程, 并且得到正确的计算结果。

参考文献

[1]汪东升.一种基于检查点的卷回恢复与进程迁移系统[J].软件学报, 2007, 10 (1) :68~73.

并行实现 篇7

执行并行算法需要并行计算环境的支持,传统的并行系统基于集群硬件环境,系统投资大,管理困难。近年来,随着GPU通用计算技术的快速发展,普通微机添加一片支持GPU通用计算的显示卡,就能组建一个强大的并行计算环境。例如基于GPU流处理器的CUDA并行计算架构技术。

1 CUDA技术概述

2006年11月NVIDIA(英伟达)公司推出了CUDA(Compute Unified Device Architecture,统一计算设备架构)。这是一种全新的基于GPU(general purpose GPU,GPGPU)流处理器(Stream Processor,SP)的通用并行计算编程模型。使GPU在大规模数据处理和科学计算等通用计算领域发挥出超高计算性能优势[1]。

1.1 CUDA程序结构[2]

CUDA程序是包含主机端(HOST)代码和设备端(DEVICE)代码,很少或者没有数据并行性的阶段可以在主机端(HOST)代码中实现,有大量数据并行性的阶段可以在设备端(DEVICE)代码中实现。NVIDIA公司研发的C编译器(nvcc)在编译过程中将两者区分开来。主机端代码是用ANSI C编写的简单代码,由在主机中的标准C编译器进一步编译,编译后以一个普通的CPU进程方式运行。而设备端代码用ANSI C扩展语言编写,并用关键词来标识数据并行函数(kernel函数)以及与之相关的数据结构来扩展代码。设备代码通常由nvcc编译器进一步编译,并在GPU设备上执行。CUDA程序不管是在主机(CPU)上运行,还是在GPU这样的设备上运行时,都包括一个或多个执行阶段。如果遇到程序执行时没有GPU设备或者是kernel函数更适合在CPU上执行这种情况,就可以用CUDA中的SDK(Software Development Kit,软件开发工具包)或MCUDA工具进行仿真,从而将kernel函数转到CPU上执行。

kernel函数通常会生成大量的线程来利用数据的并行性。采用CUDA技术生成的线程不同于CPU中的线程,它属于轻量级的线程。由于有高效的硬件支持,生成和调度这些轻量级的线程几乎不需要时钟周期。而CPU中的线程正好相反,生成和调度CPU线程需要成千上万个时钟周期。

典型的CUDA程序的执行过程如图1所示。

执行程序开始于主机(CPU),当kernel函数被调用或者是启动时,执行过程转移到设备(GPU)上。然后生成大量的线程,这些线程可以充分利用大量数据并行性。在调用kernel函数时生成的所有线程统称为网格(grid)。图中显示的是两个网格的执行过程。当kernel函数中的所有线程都完成它们的执行任务后,相应的网格也会终止,并且在调用下一个kernel函数前,程序会转到主机上继续执行。

2 图像分割

图像分割是图像分析、识别、理解过程中的一项重要技术。经过广大研究人员的不懈努力,已经设计出了许多优秀的图像分割算法。图像分割是指能将图像中有意义的对象与其背景分离,并按照不同含义的提取出这些对象。

边缘检测是基于边界的图像分割算法中最常用的处理方法,在对图像进行基于边界的分割处理时,首先要做的就是检测图像的边缘。根据人眼睛辨别物体的过程与特点,对场景中亮度变化较快的地方和物体间相互交叠的地方比较敏感,这些都是物体比较明显的边缘部分,通过对这些边缘的理解分析,可以对物体进行初步识别。所以从可以认为图像的边缘部分包含了图像相当多的识别信息。图像边缘的确定与提取对于整个图像场景的识别与理解是非常重要的,同时也是图像分割所依赖的重要特征[3]。

多年以来,人们提出了许多边缘检测算法,主要是以微分法为基础,结合模板手段提取图像边缘。常用的边缘检测算子有:Sobel算子、Roberts算子、Prewitt算子以及Laplace算子等[4]。

2.1 Prewitt算子

Prewitt算子是一种一阶微分算子的边缘检测算法,利用像素点上下、左右邻点的灰度差在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用。其原理是在图像空间利用两个方向的3*3模板(图3、图4)与图像像素3*3邻域(图2)进行卷积运算来完成,这两个方向模板一个检测水平边缘,一个检测垂直边缘。

对于像素f(i,j),则Prewitt算子定义如下:

水平方向梯度:x=(A0+A1+A2)-(A6+A5+A4)

垂直方向梯度:y=(A0+A7+A6)-(A2+A3+A4)

梯度:g[f(i,j)]=(x2+y2)1/2其中,x为像素点f(i,j)的3*3邻域与水平方向模板的卷积,y为像素点f(i,j)的3*3邻域与垂直方向模板的卷积。求出梯度g后,设定一个常数n(n<=255),当g>n时,标出该点为边界点,其像素值设定为255(白点),否则设定为g。实验表明,取n=255时,边界标示清晰、完整,分割效果最理想。

3 Prewitt算子的并行实现

根据Prewitt算子理论,容易设计出基于CPU的串行算法。由于需要像素邻域与模板做卷积运算,计算量非常大,特别是在图像分辨率较高时,需要较长的计算时间。通过分析算法,发现计算过程中不需要已经计算完成的像素的输出结果参与,像素的输出结果不会影响到算法的后续执行,这是存在数据并行性充分条件,适合设计成基于CUDA的并行算法,以减少计算时间,提高算法性能[5]。

基于CUDA的算法处理过程如下:

首先,由主机端程序程序完成数据的初始化工作。主要步骤为:

(1)将图像数据加载到主机内存。

(2)在设备内存(显存)中申请两块与图像数据相等容量的空间。其中一块空间用于存放主机内存中图像数据的拷贝,此拷贝通过PCIe-16X高速总线完成;另一块空间用于存放图像数据的处理结果。

(3)调用设备端Kernel函数,将处理过程交由设备端。

类C语言伪代码如下:[6]

……HOST端加载图像数据到主机内存……

上述语句(1)与语句(2)用于组织与分配CUDA线程结构。语句(1)将线程块组织成一维结构。该块结构可以组织成一维、二维、或三维的形式,但块内线程总数不能超过512个。语句(2)计算需要的线程块数量,由于Prewitt算子不需要求图像的最外圈像素的梯度,实际所需线程数为(m_imgWidth-2)*(m_imgHeight-2)个,而线程分配的最小单位是线程块,实际分配的线程数量为256的整数倍。所以实际分配的块为所需线程数除以256并向上取整,即为((m_imgWidth-2)*(m_imgHeight-2)+255)/256。由于需要计算梯度的像素总数往往不是256的整数倍,实际分配的线程数大于或等于所需线程数。

其次,设备(GPU)根据主机端调用Kernel函数时指定的参数生成相应数量的线程,每个线程负责一个像素的Prewitt算子计算。类C语言伪代码如下

语句③求出块内线程在网络Grid中的全局索引号tid,用于对所有线程进行统一管理。语句④将多分配的线程排除在外,确保只有前面的(m_imgWidth-2)*(m_imgHeight-2)个线程参与像素梯度的计算。尽管图像的最外层像素不需要计算梯度,但在计算次外层像素的梯度时需要用到最外层的像素值,为了能正确存取数据,线程tid需要知道所处理的像素位于整个图像矩阵中的行编号row与列编号col。语句⑤用于计算行编号row,语句⑥用于计算列编号col。

最后,将控制权交回主机端,把设备端已经处理的数据拷贝到主机内存中,释放显存中的数据空间,并由主机端将经过处理的图像显示出来。类C语言伪代码如下:

4 实验结果与分析

实验在Intel Core2 Quad Q6600 2.4GHz CPU、2GB内存、9800GTX显卡、Windows Server 2003平台上进行,分别对分辨率为320*240、800*600、1024*768、3200*2400、6400*4800的灰度图像进行连续10次应用Prewitt算子后取计算时间平均值。实验图像与处理效果如图5、图6:

串行算法与并行算法的计算时间、加速比如表1。

实验中并行算法的处理效果与串行算法一致,处理时间明显少于串行算法。随着图像分辨率的提高,加速比逐渐增加,说明基于CUDA的并行计算在处理大量具有数据并行性的数据时具有明显的速度优势。根据CUDA编程的优化理论与策略,若通过改进算法充分利用块内共享内存、提高全局存储器的合并访问程度等,算法的运行效率还会有进一步的提高[7]。

5 结束语

此次Prewitt算子的并行实现取得了预期的效果,对图像处理系统能起到提高处理效率的作用。CUDA架构作为一种GPU通用计算的新技术,为并行计算的平台拓展与易用性提供了新的途径。随着CUDA技术的不断完善与成熟,将在推动异构计算模式的发展中起到积极作用。

参考文献

[1]NICKOLLS J.Scalable Parallel Programming with CUDA[J].ACM Queue.2008,6(2):40-53.

[2]DAVID B.KIRK,WEN-MEI W.HWU.大规模并行处理器编程实践[M].陈曙晖,熊淑华.北京:清华大学出版社.2010:31-34.

[3]冯伟兴,唐墨,贺波.Visual C++数字图像模式识别技术详解[M].北京:机械工业出版社.2010:48-50.

[4]MILAN SONKA,VACLAV HLAVAC,ROGER BOYLE.Image Processing Analysis and Machine Vision(SECOND EDITION)[M].AI Hai-zhou,WU Bo.Beijing:Posts&Telecom Press.2003:52-58

[5]NVIDIA.NVIDIA CUDA Programming Guide[EB/OL].(2009-5-26).[2011-9-26].http://www.nvidia.com.

[6]NVIDIA.NVIDIA CUDA Reference Manual[EB/OL].(2009-5-26).[2011-9-26].http://www.nvidia.com.

并行实现 篇8

关键词:低密度奇偶校验码,生成矩阵,CCSDS,矩阵存储

0引言

卫星通信的目的是把对方不知道的消息及时可靠地传送给对方,必须通过地球以外空间的在轨卫星来实现[1]。随着对高效、高可靠性卫星通信系统需求的增长,最为关键的问题是如何在数据源功率和带宽有限、系统复杂性和设备造价尽可能小的条件下实现准确的信息传输,即使信息传输的误码率(BER)最小化[2]。信道编码是降低信息错误概率的有效手段,由Gallager于1962年在博士论文[3]中提出的低密度奇偶校验(Low Density Parity Check,LDPC)码就是其中之一。由于LDPC码的优异性能,已经被应用在多个领域,并被很多协议采用[4],其中空间数据系统咨询委员会(Consultative Committee for Space Data Systems,CCSDS)就对其进行了试验性的规范[5]。

为满足卫星通信系统的需求,对LDPC码进行了研究[6]。在文献[6]中,针对CCSDS规范的LDPC码设计了串行编码器和一种并行编码器。这2种方案在实际型号应用中,发现串行编码器的码速率满足不了高速的要求,而并行编码器提高了速率但并行度善不满足实际应用需求。在方案的不断变化中,实现了一种有实际应用价值的并行编码方案,降低了资源使用量、提高了数据吞吐量,为LDPC码在卫星上的实际应用提供了可行的参考。

1LDPC码

基于CCSDS规范的(8 176,7 154)LDPC码具有良好的结构特性,由2×16个511×511的循环阵组成,构成了一个1 022×8176的校验矩阵。32个循环矩阵中每个矩阵的行重、列重都是2,校验矩阵中每行的总行重是32、每列的总列重是4。可以将LDPC码校验矩阵形式转换为生成矩阵形式,其生成矩阵G是系统的循环矩阵结构,由7 154×7 154的单位阵和2列511×511的循环阵Bi,j组成,每一列包含14个循环阵。

根据以上描述,该生成矩阵是系统的,可以采用基于生成矩阵的编码方法。基于生成矩阵的编码算法如下:

c=s·G=s·(I|B)=(s|s·B)。

式中,s为输入的信息比特;矩阵I为单位阵;矩阵B对应生成矩阵G的循环移位部分。在做向量与非稀疏矩阵B的乘法时,可以将B分拆成循环移位阵进行运算,循环移位阵的存储只需要存储首行或首列,使用循环移位寄存器就能得到下一行或者下一列。

鉴于文献[6]中已经对基于CCSDS规范LDPC码做了相关介绍,并设计了串行编码器和一种并行编码器,下面将设计一种新的位宽可变的并行编码器,并对矩阵存储及处理进行优化。

2并行编码器设计

以8位并行编码器为例,其硬件结构图如图1所示。假设Ai长度为511位的循环移位寄存器,Ai+jAi右移j位的结果,C为长度为511位的寄存器。设Si,…Si+7为当前输入比特流,为配合并行编码,将该比特流进行预处理,即原先的511比特数据S扩展为{1b0,S}

硬件初始化时[7],将图中的寄存器C复位,并从ROM中获取第1行矩阵数据(B1,1和B1,2两个循环矩阵)。当向量S的第1字节S0,…,S7输入,分别对应与循环移位寄存器Ai,…,Ai+7的所有比特相与后,再将结果Ti,…,Ti+7与寄存器C相异或,将结果存入寄存器C。在之后的时钟到来时,循环移位寄存器Ai右移8 bit,向量S逐字节输入,进行上述同样的操作。

直到第64个时钟到来时,涉及B1,1和B1,2的乘法完成,将ROM中的第2行数据(B2,1和B2,2)分别置入2个计算单元的循环移位寄存器A中,重复上述过程。当第14×64个时钟到来时,涉及矩阵B的乘法完成,此时将上述2个计算单元中寄存器C的值拼接起来就得到了校验信息。

可以明显地看到,并行编码提高了编码速率。原来一个完整编码所需的时间为14×511个时钟周期,而8位并行编码则降为原来的1/8,即在相同工作频率下,吞吐量达到原来的8倍。同时并行编码可以根据应用需求的不同,改变编码的并行度,只要将向量输入的位宽和每次参与编码的并行度做对应的改动即可。

3新的矩阵存储结构

在具体型号应用中发现,文献[6]介绍的矩阵存储设计有很大的不足,宽度太大、深度太小,占用了很多ROM资源,没有给其他设计留下足够的存储空间。而且前面介绍的存储结构由于位宽太大,不利于采用外置存储器存储矩阵信息。修改存储方案如下,以8位编码器为例,将2列14×511 bits的信息存入到宽度为16 bit、深度为896的ROM中,仅花费1个1 k×18 bits的Block RAM资源。存储设计如图2所示,其中b511,…,b0为对应Bi,j的值,1′b0是为满足存储格式而填充的。同时,这种存储设计也很容易移植到外置存储器中,进一步降低FPGA的资源占用,提高编码可靠性。

结合并行编码器介绍一下新矩阵存储结构的工作原理。硬件初始化时,将寄存器C复位,并从ROM中获取第1行矩阵数据(B1,1和B1,2两个循环矩阵)。当向量S的第1字节S0,…,S7输入,分别对应与循环移位寄存器Ai,…,Ai+7的所有比特相与后,再将结果Ti,…,Ti+7与寄存器C相异或,将结果存入寄存器C。同时,从ROM中读取8比特的矩阵信息。在之后的时钟到来时,循环移位寄存器Ai右移8 bit,向量S逐字节输入,进行上述同样的操作。

直到第64个时钟到来时,涉及B1,1和B1,2的乘法完成,此时第2行矩阵数据(B2,1和B2,2)已经获得,分别置入2个计算单元的循环移位寄存器A中,重复上述过程。当第14×64个时钟到来时,涉及矩阵B的乘法完成,此时将上述2个计算单元中寄存器C的值拼接起来就得到了校验信息。

结合新的矩阵存储结构,8位并行编码器的仿真结果示意图如图3所示。其中den为数据使能,高表示输入数据有效,d为数据输入,qen为输出门控,q为编码后数据输出,包括有效数据和校验位。该编码器在XC2V3000下的综合结果可达150 MHz,实际测试可达100 MHz,简单计算吞吐量为800 Mbps,且仅使用了一个Block RAM资源存储矩阵信息。

4结束语

LDPC码已经被很多协议采纳,CCSDS对LDPC码做的试验性规范为LDPC码在卫星上的应用提供了依据。为此,在FPGA上实现了LDPC码编码,为了满足卫星通信系统应用中高吞吐量的需求,设计了并行编码。继而考虑到矩阵存储占用的资源及采用外置存储器的可能,设计了新的存储结构。采用新的矩阵存储结构和并行编码,不仅降低了资源使用量、提高了数据吞吐量,也可以方便地调整并行编码方法的并行度,适应不同应用环境对编码指标、性能的不同要求。

参考文献

[1]杨友福,刘建伟,张其善,等.卫星信道编码技术及新发展[J].通信技术,2008,41(7):30-33.

[2]LIN Shu,COSTELLO D J.差错控制编码[M].北京:机械工业出版社,2007:1-10.

[3]GALLAGER R G.Low Density Parity Check Codes[J].IRE Transaction on Information Theory,1962,8(1):21-28.

[4]袁东风,张海刚.LDPC码理论与应用[M].北京:人民邮电出版社,2008.

[5]CCSDS 131.1-O-2.Low Density Parity Check Codes forUse in Near-earth and Deep Space Applications[S],2007.

[6]叶荣润,俞帆,王晓平.基于CCSDS规范LDPC码的FPGA实现[J].无线电工程,2011,41(9):34-36.

并行实现 篇9

1 Jacobi迭代算法

1.1 算法的数学描述

解Ax=b (1-1) 的Jacobi迭代法具有直观明了、通俗易懂、计算简单等特点, 所以这一方法是解线性方程组Ax=b的一般常用方法之一。设有方程组记为Ax=b, 其中A是n阶系数矩阵, b是n维向量。记D, -L, -U分别是A的对角、严格下三角、严格上三角部分构成的矩阵, 即A=D-L-U, 这时方程组可以变为Dx=b+ (L+U) x (1-2) , 其中如果方程组 (1-2) 右边的x已知, 由于D是对角矩阵, 可以很容易地求得左边的x, 这就是Jacobi迭代法的出发点。众所周知, Jacobi迭代的矩阵形式为其中B=D-1 (L+U) , f=D-1b, B为Jacobi方法迭代矩阵。

1.2 算法的并行性描述

Jacobi迭代是一种比较常见的迭代方法。Jacobi迭代的局部性很好, 传统串行方法效率不高, 这里我们采用并行方法来实现Jacobi迭代, 可以取得很好的并行性。将参加迭代的数据按块分割后, 各块之间的数据除了相邻元素需要通信外, 在各块的内部可以完全独立地进行并行计算, 且随着计算规模的扩大, 通信的开销相对于计算来说比例会降低, 这将更有利于并行效果。

2 MPI并行计算方法简介

并行计算就是研究如何把一个需要非常巨大计算能力才能解决的问题分成许多小的部分, 然后把这些部分分配给许多计算机进行并行处理, 最后将这些计算结果综合起来得到最终的结果。用一句话说, 就是为了加快运算速度和解决大主存容量的求解问题的多计算机/多处理机的并行编程技术。MPI (Message Passing Interface) 是消息传递函数库标准规范, 由MPI论坛开发, 支持FORTRAN和C。MPI是一种消息传递编程模型, 也是现今最流行的并行计算编程方法。消息传递程序由多个进程组成, 其中每个进程有自己的控制线程且可执行不同代码, 它支持控制并行和数据并行两种。

3 用MPI程序实现Jacobi迭代

3.1 矩阵数据的分割

为了实现并行求解, 这里将参加迭代的数据按列进行分割, 并假设一共有4个进程同时并行进行计算。数据的分割结果如图1所示。

假设需要迭代的数据是N×N的矩阵, 令N=4×P, 按图示1进行数据划分, 则分布在4个不同进程上的数据分别是:进程0, A (N, 1:P) ;进程1, A (N, P+1:2P) ;进程2, A (N, 2P+1:3P) ;进程3, A (N, 3P+1:N) 。其中1:N代表矩阵中取第一列至第N列的数据。由于在迭代过程中, 边界点新值的计算需要相邻边界其它块的数据, 因此在每一个数据块的两侧又各增加一列的数据空间, 用于存放从相邻数据块通信得到的数据。

这样原来每个数据块的大小从N×P扩大到N (P+2) , 进程0和进程1的数据块只需扩大一块即可满足通信的要求, 但是这里为了编程的方便和形式的一致, 统一在两边都增加了数据块。

3.2 数据通信

计算和通信过程是这样的:首先对数组赋初值。注意对不同的进程, 赋值方式是不同的 (两个内部块相同, 但是内部块和两个外部块两两互不相同) 。然后便开始进行Jacobi迭代, 在迭代之前, 每个进程都需要从相邻的进程得到数据块, 同时每一个进程也都需要向相邻的进程提供数据块, 如图2所示。由于每一个新迭代点的值是由相邻点的旧值得到, 所以这里引入一个中间数组, 用来记录临时得到的新值, 一次迭代完成后, 再统一进行更新操作。

3.3 并行程序设计步骤

对于Jacobi迭代, 计算xi的新值时, 需要使用xi+1, xi+2, …, xn-1的旧值和x0, x1, …, xi-1的新值。在计算过程中, xi与x0, x1, …, xi-1及其xi+1, xi+2, …, xn-1的值会在不同的处理器 (进程) 中产生, 当计算出一个分量值后, 应立即广播给其它处理器以供给处理器对x的其它分量值计算。当它计算完x的所有分量后, 还要接收其它处理器发送的新的x分量, 为计算下一轮的x作准备。具体步骤如下:

第一步:MPI程序初始化;

第二步:第0号进程开始读取数据;

第三步:广播初始解向量数据;

第四步:所有进程并行的对主对角元素右边的数据求和;

第五步:迭代求解;

第六步:第0号进程将结果输出;

第七步:MPI程序结束。

3.4 测试用例及结果分析

假设有如下方程组:

通过手工数学计算, 得到方程组的精确解为:x1=-9/4;x2=4;x3=2。

现用Jacobi迭代并行求解。

如果迭代10次, 运行结果如下:

以上结果已经与精确值相当接近, 精度能够满足一般计算需求, 进一步将迭代次数放大到1000次, 运行结果如下:

以上结果已经是精确结果, 但实际运行时间却没有增加多少, 因为每增加一次迭代只需计算一次矩阵和向量乘法。

4 结束语

随着高性能计算和网络计算技术的普及, 并行计算技术正在渗透到现代社会的各个领域, 其应用前景将相当广阔。许多传统的算法都可以通过设计适当的并行计算模型, 应用并行计算方法实现, 从而提高其效率。MPI提供了良好的并行程序接口, 通过调用MPI的库程序, 可以达到并行化程序的目的, 但是并行程序的设计相对于串行程序的设计来说要复杂得多, 并行计算模型设计得越好, 并行程序的设计才能越简单。

摘要:Jacobi迭代法是解线性方程组的最常用方法, 它被用于工程中的众多领域。简要介绍了高性能计算的发展、并行计算及其MPI, 分析了Jacobi迭代的并行性, 进而在传统串行迭代方法的基础上, 应用了目前最常用的并行计算方法——MPI来实现Jacobi迭代。

关键词:MPI,并行计算,Jacobi迭代,数据通信

参考文献

[1]陈国良.并行算法的设计与分析[M].北京:高等教育出版社, 2002.

[2]安虹, 陈国良.并行程序设计模型和语言[J].软件学报, 2002 (1) .

[3]都志辉, 李三立.高性能计算之并行编程技术——MPI并行程序设计[J].北京:清华大学出版社, 2001.

[4]杨爱民, 陈一鸣.MPI并行编程环境及程序设计[J].河北理工学院学报, 2005 (3) .

[5]莫则尧, 袁国兴.消息传递并行编程环境MPI[M].北京:科学出版社, 2001.

[6]王春霞.PC集群系统的并行开发环境MPI及其程序性能的分析研究[D].河南:郑州大学, 2003.

并行实现 篇10

连续属性离散化处理是数据挖掘中一个重要且较活跃的研究领域[1]。由于许多算法要求属性数据取值为离散的, 而现实中经常出现连续属性值的情况, 为了满足这类算法的要求, 常常需要对连续属性的取值进行离散化。同时, 高效地离散化处理能够减少算法的时间和空间开销。

针对连续属性的离散化, 典型的方法主要有基于信息熵的方法[2,3,4,5,6,7]和基于聚类的方法[8,9]。基于信息熵的方法较充分地利用了样本信息, 是最常用的离散化方法之一。Clarke和Barton[2]提出的基于熵和最小描述长度理论的离散化方法是最经典的离散化方法之一, 在计算和确定划分点时利用了信息熵概念[3], 这使得它更有可能将区间边界定义在准确位置, 使得离散化的效果更好, 有助于提高分类的准确性。谢宏等人[4]对每一个候选断点定义了信息熵, 并以此作为断点重要性的量度标准, 提出了基于信息熵的粗糙集连续属性离散化算法。Lee[5]使用信息理论衡量每个区间所包含的信息量, 通过最小化信息损失来离散连续属性值, 提出了一种基于Hellinger的连续数据离散化方法。Wu等人[6]基于二分熵的概念和复合分布索引技术, 提出了一种基于分布-索引的离散化器。赵静娴等人[7]分析了基于熵的离散化标准的切点特性, 提出并证明了一种基于边界点属性值合并和不一致度检验的离散化算法。但是, 这种离散化的方法仅仅局限于小规模的数据集, 对于海量数据的连续属性离散化处理, 将会是一个很大的瓶颈。

面对海量数据, 并行化是提高其效率的有效手段, 而Hadoop是并行计算的一种有效实现方式。因此, 本文在MapReduce编程模型下, 提出一种基于熵的连续属性离散化并行算法, 该算法既保证了离散处理后的分类效果, 又解决了对于海量数据离散化处理效率低的问题。通过大量的实验结果表明, 提出的并行化算法在海量数据集的离散化处理上有很高的效率。

1 相关工作

1.1 MapReduce编程模型

Hadoop是一个开源的框架, 主要由分布式文件系统 (HDFS) 和MapReduce编程模型两大核心组成[10]。HDFS能够实现数据在计算机集群组成的云上高效的存储和管理。MapReduce是一种并行编程模式, 用于海量数据集的并行计算, 它将该并行计算过程高度地抽象为了两个函数:Map函数和Reduce函数。因此, 在MapReduce框架中编写应用程序就是定制化mapper和reducer的过程。这种计算模型要求输入、输出和中间数据的形式都是一组键值对。Map函数接收一个形式的输入, 然后同样产生一个形式的中间输出, Hadoop会负责将所有具有相同中间k2值的v2集合到一起传递给Reduce函数, Reduce函数接收一个如形式的输入, 然后对这个value集合进行处理, 每个Reduce的输出也是的形式。最后, 将结果返回给应用程序。

1.2 基于熵的连续属性离散化算法

在具有n个连续属性的数据集M中, 对于任意一连续属性, 其最大区间数为其样本个数k, 即一个区间至少有一个样本值。将连续属性离散化, 就是将该连续属性的取值范围划分为若干个区间, 将连续的样本值转换成少于k的若干个离散值。因此, 离散化算法的关键在于合理确定划分点的个数和位置[2]。

对于离散型随机变量A的熵定义如下[2]:

文献[2]中已证明H (A) 是一个凹函数。可通过合并区间, 使得区间数k减少从而有效地减小熵值H (A) , 但最终需要达到一个最小熵值和最优区间数k的平衡。假设区间数k的最小取值能够达到1, 即将所有值都合并为一个区间, 依据文献[2]中的平衡条件可得如下公式:

其中:kmax是最大区间数, H (kmax) 是最大区间数时的熵值。当Ck>Ck-1时, 停止区间合并。此时, k为最优区间数。

在此基础上, 本文将基于熵的离散化方法应用到Hadoop平台上, 通过对连续属性值的自身合并, 找到合并前后熵差最小的合并点作为最佳合并点;然后使用式 (2) 作为算法的停止条件。文献[2]中的算法可简单描述为:

输入:有多个连续属性的数据集M

输出:数据集M的各个属性上的合并状态集

步骤:

对于M的每一个属性A:

(1) 计算初始状态熵值H (kmax) ;

(2) 先将M按照属性A进行升序排列, 然后在有序序列中选取相邻两个毗邻区间合并;

(3) 逐一计算每相邻两个区间合并后的熵值H (k-1) , 将其与H (kmax) 作差, 选择熵差最小的合并区间作为最佳合并区间;

(4) 通过式 (2) 计算Ck与Ck-1的值并比较大小, 若Ck

2 基于Hadoop的并行离散化算法

基于MapReduce编程模型的并行算法设计, 最主要的工作是设计和实现Map和Reduce函数。由算法描述可知, 数据集M中的n个属性之间可以并行计算最佳合并区间, 因此, 该算法的MapReduce并行化具有可行性。但在设计离散算法并行时需要计算熵值, 为了提高该离散算法在并行时的效率, 将信息熵公式中求概率p (a) 时所需要的信息进行预处理。因此我们将离散化过程分为两个阶段:离散化预处理阶段和离散化处理阶段。

2.1 离散化预处理阶段

本阶段所要做的工作主要是将数据集M上的各个属性Ai (i=1, 2, …, n) 的所有可能的取值, 及其该值出现次数num统计出来, 为求出连续属性Ai的所有取值的概率做准备。离散化预处理阶段的伪代码可描述为:

2.2 离散化处理阶段

经过离散化预处理后, 将其输出结果作为离散化处理的输入。在该阶段, Map函数将仅仅只是改变其输出形式, 将key中attribute Id的内容即列号取出来作为Map的key输出, 这样一来, 才能在Map与Reduce之间的洗牌阶段将不同的属性列分别传到不同的Reduce节点上, 实现各连续属性之间并行离散化的目的。离散化处理阶段的伪代码可描述为:

将Map输出的不同的key值分别映射到不同的Reduce任务节点上, 实现对数据集中各个连续属性的并行离散化处理。该机制可通过修改mapred_site.xml配置文件中mapred.reduce.tasks的属性值为4来实现。

根据Reduce函数的输出, 可以得到所有区间值, 从而完成离散化处理过程。

3 实验及结果分析

3.1 实验环境

本文进行实验所使用的Hadoop集群中共有37个节点, 每个节点的配置信息及运行环境完全相同。操作系统版本是ubuntu10.12, Hadoop版本是0.20.2, Java版本是1.6.0_21。根据Handoop项目官方网站介绍的方法配置基于hadoop0.20.2版本的集群[11]。其中一台作为Master节点, 其余36台全为Slave节点。

在集群中测试离散效果时使用的基础实验数据来自于UCI dataset中的wine数据集。在测试算法的性能时, 实验中分别构造了256MB、512MB、1GB、2GB和4GB等5个不同大小的数据集。

3.2 实验结果

在保证了离散化效果的前提下, 本文做了大量的实验工作。分别用256MB、512MB、2GB、4GB等不同规模的数据集在2、4、6、8、10、12, 14、16个不同节点的集群上做测试, 得到的实验结果如图1所示。

由图1可以看出, 在分布式集群环境中, 对于小规模的数据集效果甚微, 但对于大型数据集文件, 有明显的优势。该实验结果验证了该算法更适用于规模较大的数据集, 使海量数据的离散化处理成为可能。

同时, 以2GB数据集文件为例, 分别在2、4、6、8、10、12个不同节点的集群上做实验, 并计算了加速比, 加速比可定义为:在单机上的运行时间/集群中的运行时间, 实验数据如表1所示。

将表1中的数据绘制成折线图, 如图2所示。可以明显地看出, 随着节点个数的增加, 加速比呈线性增长, 即对于具有一定规模的同一数据, 随着节点个数的增加, 算法所运行的时间明显减少, 算法的运算速度明显提高。

但在图2中可以看出, 8个节点后, 加速比的增长速度明显减小, 就意味着时间减少的趋势逐渐变缓。这是因为, 节点之间也存在信息的交互, 集群中的节点越多, 节点间的通信量就越大, 使得时间减少的缓慢, 可以通过增加网络带宽来适当解决此问题。对于一定规模的数据集, 随着节点的增加, 运行时间会减少, 但并不是集群中的节点个数越多, 运行时间就会一直减少。不同文件所需要的最佳集群节点个数如图3所示, 可以观察到同一数据文件, 随着节点个数的增加, 运行时间减少的趋势变缓, 并会在某个节点集群之后不再有变动。这是因为Hadoop对数据是分块处理的, 默认数据块的大小是64MB。对于512MB文件, 可划分为8个数据块, 又由于在集群环境配置中设置的每个节点最大运行的map任务数为2, 因此512MB文件在集群节点数为4的时候效果达到最佳。再比如, 1GB的文件在16个节点运行的效果最佳, 在增加节点的个数后, 将趋于平缓。

4 结语

本文对Hadoop环境下连续属性离散化的并行实现做了深入研究, 在MapReduce编程模型下提出了基于熵的连续属性离散化的并行方法, 并予以实现。首先, 简单介绍了Hadoop的体系结构和基于熵的连续属性离散化算法, 然后设计并实现了基于MapReduce编程模型的并行算法。最后, 通过实验结果和实验分析得出, 在保证离散效果的前提下, 该方法可以高效地处理海量数据的连续属性离散化。

本文提到的基于熵的离散化算法虽然能产生较好的离散效果, 但它是一种无监督的, 自下而上的离散化算法。对于有类标记的数据集来说, 将其连续属性离散化应考虑类标记对其连续属性的影响, 因此, 下一步将研究更高效的离散化算法, 提出一种有监督的高效的连续属性离散化算法, 并应用到云计算环境中。

参考文献

[1]Kurgan L A, Cios K J.CAIM discretization algorithm[J].IEEE Transactions on Knowledge and Data Engineering, 2004, 16 (2) :145-153.

[2]Clarke E J, Barton B A.Entropy and MDL discretization of continuous variables for Bayesian belief networks[J].International Journal of Intelligence Systems, 2000, 15 (1) :61-92.

[3]Dougherty J, Kohavi R, Sahami M.Supervised and unsupervised discretization of continuous features[C]//Proceedings of the Twelfth International Conference Machine Learning, 1995:194-202.

[4]谢宏, 程浩忠, 牛东晓.基于信息熵的粗糙集属性离散化方法及应用[J].计算机学报, 2005, 28 (9) :1570-1574.

[5]Lee C.A hellinger-based discretization method for numeric attributes in classification learning[J].Knowledge-Based Systems, 2007, 20 (4) :419-425.

[6]Wu Q, Bell D, Prasad G, et al.A distribution-index-based discretizer for decision-making with symbolic AI approaches[J].IEEE Transactions on Knowledge and Data Engineering, 2007, 19 (1) :17-28.

[7]赵静娴, 倪春鹏, 詹原瑞.一种高效的连续属性离散化算法[J].系统工程与电子技术, 2009, 31 (1) :195-199.

[8]Gupta A, Mehrotra K, Mohan C.A clustering-based discretization for supervised learning[J].Statistics&Probability Letters, 2010, 80 (9-10) :816-824.

[9]Ferreira A J, Figueiredo M A.An unsupervised approach to feature discretization and selection[J].Pattern Recognition, 2012, 45 (9) :3048-3060.

[10]Chuck Lam.Hadoop实战[M].北京:人民邮电出版社, 2011.

本文来自 古文书网(www.gwbook.cn),转载请保留网址和出处

相关文章:

并行模型01-23

JSP课程01-23

并行模式01-23

并行程序分析01-23

并行检测01-23

双轨并行01-23

并行分析算法01-23

快速并行算法01-23

并行优化01-23

并行产品研制01-23

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

上一篇:并行模型 下一篇:双轨并行