一种基于MIC的随机数发生器跳跃式并行化方法技术

技术编号:13505327 阅读:47 留言:0更新日期:2016-08-10 12:15
本发明专利技术公开一种基于MIC的随机数发生器跳跃式并行化方法,根据系统分配的线程数将随机数发生器的随机数序列划分成与所述分配的线程数数量相同的子序列;每个线程从各子序列的起点开始生成随机数;各个线程生成的随机数序列按原始序列的顺序重新组合。相对于CPU单线程,本方法在MIC平台下的加速比具有明显优势。

【技术实现步骤摘要】

本专利技术涉及常规类型随机数发生器的一种跳跃式并行化方法,尤指针对Intel MIC架构的硬件进行随机数序列输出的方法。
技术介绍
随机数发生器是用来产生随机数的装置,一般分为真随机数发生器和伪随机数发生器。目前科学研究和工程模拟对随机数发生器的性能及速率要求日益增长,将并行计算技术应用于随机数发生器可快速提高产生效率。在实际的科学研究和工程实践活动中所使用的主要是伪随机数产生器。伪随机数产生器通常使用软件方式实现,相对于真随机数产生器具有方法简单、成本低和应用方便等优点,但是产生速率受到计算机性能的限制。并行化是提高计算机系统计算速度和处理能力的一种有效手段,Intel MIC(Many Integrated Core)架构专为并行计算而设计,可以分配多达上百个线程,而且功耗低,适用于需要大规模计算的应用。MIC计算平台的这些特点可以在很大程度上提高伪随机数产生器的计算速度。
技术实现思路
专利技术要解决的问题本专利技术的一个目的在于克服现有技术中的不足,提供一种基于MIC的随机数发生器跳跃式并行化方法。用于解决问题的方案一种基于MIC的随机数发生器跳跃式并行化方法,包括以
下步骤:步骤A、根据系统分配的线程数将随机数发生器的随机数序列划分成与所述分配的线程数数量相同的子序列;步骤B、每个线程从各子序列的起点开始生成随机数;步骤C、各个线程生成的随机数序列按原始序列的顺序重新组合。优选地,基于MIC的随机数发生器跳跃式并行化方法,包括以下步骤:步骤A、根据系统分配的线程数将随机数发生器的随机数序列划分成与所述分配的线程数数量相同的子序列;步骤B、每个线程从各子序列的起点开始生成随机数,其中,第一子序列的起点为所述随机数发生器的种子元素,随后子序列的起点为所述随机数发生器根据所述种子元素依次递推生成的元素;步骤C、各个线程生成的随机数序列按原始序列的顺序重新组合,当MIC完成计算时,每个线程将各自生成的随机数填充到预先分配好的内存中以供使用,序列的填充顺序与原始序列保持一致。专利技术的效果本专利技术结合MIC的众核特点,同时开启数百的线程,每个线程负责生成一段子序列。同时借助MIC的native执行模式,在MIC上完成所有随机数的生成任务。由于每个线程产生的随机数序列来自串行算法产生的随机数序列中间隔为N的元素,各线程之间的计算完全不冲突。相对于CPU单线程,本方法在MIC平台下的加速比具有明显优势。附图说明图1为随机数序列划分示意图;图2为GFSR(521,32)并行化程序执行的流程图;图3a和图3b为基于CPU和MIC的加速比趋势图。具体实施方式以下将结合实施例详细说明本专利技术的各种示例性实施例、特征和方面。为了更好的说明本专利技术,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有这些具体细节,本专利技术同样可以实施。在另外一些实例中,对于大家熟知的方法、手段、材料未作详细描述,以便于凸显本专利技术的主旨。本专利技术所提出的跳跃式随机数发生器的并行化方法,是按照如下方式解决所述技术问题的:首先,根据系统分配的线程数将发生器的随机数序列划分成多个子序列,子序列的数量与线程数相等,划分方法如图1所示(假设线程数量为3)。在图1中,0号元素为随机数发生器的种子。随机数发生器获取种子元素后,依次递推生成1至8号元素及其之后的元素。序列0、序列1和序列2分别以0号元素、1号元素和2号元素为起点跳跃式生成之后的元素,跳跃间隔为2,例如由0号元素跳跃式生成3号元素。序列划分完成后,每个线程从各子序列的起点开始生成随机数。由于每个线程都可看做一个独立的随机数发生器,因此均需要种子。如图1中,序列0、序列1和序列2的种子分别为0号元素、1号元素和2号元素。最后,将各个线程生成的随机数序列按原始序列的顺序重新组合。当MIC卡完成计算时,每个线程将各自生成的随机数填充到预先分配好的内存中以供使用,序列的填充顺序与原始序列保持一致。本专利技术结合MIC的众核特点,同时开启数百的线程,每个线程负责生成一段子序列。同时借助MIC的native执行模式,在MIC上完成所有随机数的生成任务。由于每个线程产生的随机数序列来自串行算法产生的随机数序列中间隔为N的元素,各线程之间的计算完全不冲突。为使本专利技术的目的、技术方案以及优点更加清晰,下面结合GFSR(521,32)随机数产生器对本专利技术做进一步的说明。GFSR(521,32)的递推式为:Wi=Wi-521∧Wi-(521-32) (1)利用跳跃式方法对GFSR(521,32)并行化时,由于每个线程产生的随机数序列来自串行算法产生的随机数序列Wi中间隔为N的元素,其中N是线程数且为2的幂次。首先由串行算法产生每个线程的521个初始值,第k个线程的初始值为:Wk,WN+k,W2N+k,…,W520N+k其中k=0,1,…,N-1。根据定理,若Wi=Wi-p∧Wi-(p-q),则由上述定理可推出第k(k=0,1,…,N-1)个线程产生随机数的递推式为:Wi=Wi-521N∧Wi-(521-32)N (2)其中i=521N+k,522N+k,…;N=2m,m=0,1,2,…。每个线程由其初始值通过公式(2)即可求出最终的随机数序列。且当种子相同时,并行算法产生的随机数序列与串行算法产生的随机数序列完全相同。GFSR(521,32)并行化程序执行
的流程图如图2所示。测试数据:在CPU平台1、2、4、8和16个线程下分别对GFSR(521,32)产生1,000,000、10,000,000、100,000,000、1,000,000,000及10,000,000,000个随机数,并在MIC平台1、2、4、8、16、32、64和128个线程下分别产生1,000,000、10,000,000、100,000,000、1,000,000,000及10,000,000,000个随机数的时间测试。相对于CPU单线程,,MIC平台下的最优加速比为7.58。测试软硬件环境:测试结果如图3a和图3b所示,其中,图3a为CPU平台下的加速比,图3b为MIC平台下的加速比。本专利技术结合MIC的众核特点,同时开启数百的线程,每个线程负责生成一段子序列。同时借助MIC的native执行模式,在MIC上完成所有随机数的生成任务。由于每个线程产生的随机数序列来自串行算法产生的随机数序列中间隔为N的元素,各线程之间的计算完全不冲突。相对于CPU单线程,MIC平台
下的加速比具有明显优势。虽然已经参照以上实施方式说明了本专利技术,但是,应该理解的是本专利技术不限于所公开的实施方式。所附权利要求书的范围应在最宽泛的范围内进行解释,以涵盖所有变型、等同结构和功能。本文档来自技高网
...

【技术保护点】
一种基于MIC的随机数发生器跳跃式并行化方法,其特征在于,包括以下步骤:步骤A、根据系统分配的线程数将随机数发生器的随机数序列划分成与所述分配的线程数数量相同的子序列;步骤B、每个线程从各子序列的起点开始生成随机数;步骤C、各个线程生成的随机数序列按原始序列的顺序重新组合。

【技术特征摘要】
1.一种基于MIC的随机数发生器跳跃式并行化方法,其特征在于,包括以下步骤:步骤A、根据系统分配的线程数将随机数发生器的随机数序列划分成与所述分配的线程数数量相同的子序列;步骤B、每个线程从各子序列的起点开始生成随机数;步骤C、各个线程生成的随机数序列按原始序列的顺序重新组合。2.根据权利要求1所述的基于MIC的随机数发生器跳跃式并行化方法,其特征在于,包括以下步骤:步骤A、根据系统分配的线程数将随机...

【专利技术属性】
技术研发人员:张保东周晓辉宋博文
申请(专利权)人:浪潮电子信息产业股份有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1