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

文档序号:10488717阅读:292来源:国知局
一种基于mic的随机数发生器跳跃式并行化方法
【专利摘要】本发明公开一种基于MIC的随机数发生器跳跃式并行化方法,根据系统分配的线程数将随机数发生器的随机数序列划分成与所述分配的线程数数量相同的子序列;每个线程从各子序列的起点开始生成随机数;各个线程生成的随机数序列按原始序列的顺序重新组合。相对于CPU单线程,本方法在MIC平台下的加速比具有明显优势。
【专利说明】
一种基于MIC的随机数发生器跳跃式并行化方法
技术领域
[0001] 本发明涉及常规类型随机数发生器的一种跳跃式并行化方法,尤指针对Intel MIC架构的硬件进行随机数序列输出的方法。
【背景技术】
[0002] 随机数发生器是用来产生随机数的装置,一般分为真随机数发生器和伪随机数发 生器。目前科学研究和工程模拟对随机数发生器的性能及速率要求日益增长,将并行计算 技术应用于随机数发生器可快速提高产生效率。在实际的科学研究和工程实践活动中所使 用的主要是伪随机数产生器。伪随机数产生器通常使用软件方式实现,相对于真随机数产 生器具有方法简单、成本低和应用方便等优点,但是产生速率受到计算机性能的限制。 [000 3]并行化是提高计算机系统计算速度和处理能力的一种有效手段,Intel MIC(Many Integrated Core)架构专为并行计算而设计,可以分配多达上百个线程,而且功耗低,适用 于需要大规模计算的应用。MIC计算平台的这些特点可以在很大程度上提高伪随机数产生 器的计算速度。

【发明内容】

[0004] 发明要解决的问题
[0005] 本发明的一个目的在于克服现有技术中的不足,提供一种基于MIC的随机数发生 器跳跃式并行化方法。
[0006] 用于解决问题的方案
[0007] -种基于MIC的随机数发生器跳跃式并行化方法,包括以下步骤:
[0008] 步骤A、根据系统分配的线程数将随机数发生器的随机数序列划分成与所述分配 的线程数数量相同的子序列;
[0009] 步骤B、每个线程从各子序列的起点开始生成随机数;
[0010]步骤C、各个线程生成的随机数序列按原始序列的顺序重新组合。
[0011]优选地,基于MIC的随机数发生器跳跃式并行化方法,包括以下步骤:
[0012] 步骤A、根据系统分配的线程数将随机数发生器的随机数序列划分成与所述分配 的线程数数量相同的子序列;
[0013] 步骤B、每个线程从各子序列的起点开始生成随机数,
[0014] 其中,第一子序列的起点为所述随机数发生器的种子元素,
[0015] 随后子序列的起点为所述随机数发生器根据所述种子元素依次递推生成的元素;
[0016] 步骤C、各个线程生成的随机数序列按原始序列的顺序重新组合,当MIC完成计算 时,每个线程将各自生成的随机数填充到预先分配好的内存中以供使用,序列的填充顺序 与原始序列保持一致。
[0017] 发明的效果
[0018] 本发明结合MIC的众核特点,同时开启数百的线程,每个线程负责生成一段子序 列。同时借助MIC的native执行模式,在MIC上完成所有随机数的生成任务。由于每个线程产 生的随机数序列来自串行算法产生的随机数序列中间隔为N的元素,各线程之间的计算完 全不冲突。相对于CHJ单线程,本方法在MIC平台下的加速比具有明显优势。
【附图说明】
[0019] 图1为随机数序列划分示意图;
[0020] 图2为GFSR(521,32)并行化程序执行的流程图;
[0021] 图3a和图3b为基于CPU和MIC的加速比趋势图。
【具体实施方式】
[0022]以下将结合实施例详细说明本发明的各种示例性实施例、特征和方面。为了更好 的说明本发明,在下文的【具体实施方式】中给出了众多的具体细节。本领域技术人员应当理 解,没有这些具体细节,本发明同样可以实施。在另外一些实例中,对于大家熟知的方法、手 段、材料未作详细描述,以便于凸显本发明的主旨。
[0023] 本发明所提出的跳跃式随机数发生器的并行化方法,是按照如下方式解决所述技 术问题的:首先,根据系统分配的线程数将发生器的随机数序列划分成多个子序列,子序列 的数量与线程数相等,划分方法如图1所示(假设线程数量为3)。
[0024] 在图1中,0号元素为随机数发生器的种子。随机数发生器获取种子元素后,依次递 推生成1至8号元素及其之后的元素。序列0、序列1和序列2分别以0号元素、1号元素和2号元 素为起点跳跃式生成之后的元素,跳跃间隔为2,例如由0号元素跳跃式生成3号元素。
[0025] 序列划分完成后,每个线程从各子序列的起点开始生成随机数。由于每个线程都 可看做一个独立的随机数发生器,因此均需要种子。如图1中,序列〇、序列1和序列2的种子 分别为〇号元素、1号元素和2号元素。
[0026] 最后,将各个线程生成的随机数序列按原始序列的顺序重新组合。当MIC卡完成计 算时,每个线程将各自生成的随机数填充到预先分配好的内存中以供使用,序列的填充顺 序与原始序列保持一致。
[0027] 本发明结合MIC的众核特点,同时开启数百的线程,每个线程负责生成一段子序 列。同时借助MIC的native执行模式,在MIC上完成所有随机数的生成任务。由于每个线程产 生的随机数序列来自串行算法产生的随机数序列中间隔为N的元素,各线程之间的计算完 全不冲关。
[0028]为使本发明的目的、技术方案以及优点更加清晰,下面结合GFSR(521,32)随机数 产生器对本发明做进一步的说明。
[0029] GFSR(521,32)的递推式为:
[0030] Wi = Wi-521AWi-(521-32) (1)
[0031] 利用跳跃式方法对GFSR(521,32)并行化时,由于每个线程产生的随机数序列来自 串行算法产生的随机数序列1中间隔为N的元素,其中N是线程数且为2的幂次。
[0032] 首先由串行算法产生每个线程的521个初始值,第k个线程的初始值为:
[0033] ffk,ffN+k ?ff2N+k? *** ?ff520N+k
[0034] 其中 k = 〇,l,.._,N-l。
[0035] 根据定理,若1=¥1-[)八评^-(1),>由上述定理可推出第k(k = 0,1,···,Ν_1)个线程产生随机数的递推式为:
[0036] ffi = ffi-521NAWi-(521-32)N (2)
[0037] 其中i = 521N+k,522N+k,
[0038] 每个线程由其初始值通过公式(2)即可求出最终的随机数序列。且当种子相同时, 并行算法产生的随机数序列与串行算法产生的随机数序列完全相同。GFSR(521,32)并行化 程序执行的流程图如图2所示。
[0039] 测试数据:在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。
[0040]测试软硬件环境:
[0042] 测试结果如图3a和图3b所示,其中,图3a为CPU平台下的加速比,图3b为MIC平台下 的加速比。
[0043]本发明结合MIC的众核特点,同时开启数百的线程,每个线程负责生成一段子序 列。同时借助MIC的native执行模式,在MIC上完成所有随机数的生成任务。由于每个线程产 生的随机数序列来自串行算法产生的随机数序列中间隔为N的元素,各线程之间的计算完 全不冲突。相对于CHJ单线程,MIC平台下的加速比具有明显优势。
[0044]虽然已经参照以上实施方式说明了本发明,但是,应该理解的是本发明不限于所 公开的实施方式。所附权利要求书的范围应在最宽泛的范围内进行解释,以涵盖所有变型、 等同结构和功能。
【主权项】
1. 一种基于MIC的随机数发生器跳跃式并行化方法,其特征在于,包括以下步骤: 步骤A、根据系统分配的线程数将随机数发生器的随机数序列划分成与所述分配的线 程数数量相同的子序列; 步骤B、每个线程从各子序列的起点开始生成随机数; 步骤C、各个线程生成的随机数序列按原始序列的顺序重新组合。2. 根据权利要求1所述的基于MIC的随机数发生器跳跃式并行化方法,其特征在于,包 括以下步骤: 步骤A、根据系统分配的线程数将随机数发生器的随机数序列划分成与所述分配的线 程数数量相同的子序列; 步骤B、每个线程从各子序列的起点开始生成随机数, 其中,第一子序列的起点为所述随机数发生器的种子元素, 随后子序列的起点为所述随机数发生器根据所述种子元素依次递推生成的元素; 步骤C、各个线程生成的随机数序列按原始序列的顺序重新组合,当MIC完成计算时,每 个线程将各自生成的随机数填充到预先分配好的内存中以供使用,序列的填充顺序与原始 序列保持一致。
【文档编号】G06F7/58GK105843587SQ201610149155
【公开日】2016年8月10日
【申请日】2016年3月16日
【发明人】张保东, 周晓辉, 宋博文
【申请人】浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1