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

技术编号:13508660 阅读:44 留言:0更新日期:2016-08-10 20:05
本发明专利技术公开一种基于MIC的随机数发生器分段式并行化方法,利用对周期序列分段的方法进行并行化,将各个线程生成的随机数拼接起来形成最终的序列。相对于CPU单线程,MIC平台下的加速比具有明显优势。

【技术实现步骤摘要】
【专利摘要】本专利技术公开一种基于MIC的随机数发生器分段式并行化方法,利用对周期序列分段的方法进行并行化,将各个线程生成的随机数拼接起来形成最终的序列。相对于CPU单线程,MIC平台下的加速比具有明显优势。【专利说明】一种基于MIC的随机数发生器分段式并行化方法
本专利技术涉及常规类型随机数发生器的一种分段式并行化方法,尤指针对Intel MIC架构的硬件进行随机数序列输出的方法。
技术介绍
随机数发生器是用来产生随机数的装置,一般分为真随机数发生器和伪随机数发 生器。目前科学研究和工程模拟对随机数发生器的性能及速率要求日益增长,将并行计算 技术应用于随机数发生器可快速提高产生效率。另外随机数发生器的并行化研究工作主要 集中于多核中央处理器(Central Processing Unit,CPU)平台,缺少基于Intel最新产品 MIC(Many Integrated Core)平台并行化的相关理论依据和性能分析。 Intel MIC(Many Integrated Core)架构具有更小的内核和更多的硬件线程,以 及更宽的矢量单元,是提高整体性能、满足高度并行化应用需求的理想之选,它基于x86架 构,支持0penMP、pThread等并行编程模型。基于MIC架构的Xeon Phi计算加速卡由57~61颗 物理处理核心构成,每个物理核心包含4个硬件线程,加速卡板载内存大小为6GB~8GB,双 精度计算峰值计算能力达到lTFlops。其在并行计算方面相比CPU更有优势,解决了高度并 行计算问题。
技术实现思路
专利技术要解决的问题 本专利技术的一个目的在于克服现有技术中的不足,提供一种基于MIC的随机数发生 器分段式并行化方法。 用于解决问题的方案 -种基于MIC的随机数发生器分段式并行化方法,包括以下步骤: 步骤A、获取划分步骤,包括 步骤Al、获取原始随机数序列的周期P; 步骤A2、获取可支持的最大线程数N,每线程可产生的随机数个数i = f . * 步骤B、主线程读取参数,计算各线程初始状态seed,包括 步骤B1、主线程读取所需要的随机数数量random_num、分配的线程数threads_num 以及种子seed,其中 0< random_num < P、0 < thr eads_num < N; 步骤B2、建立内存区间result; 步骤B3、计算各线程需要产生的随机数num = random_num/threads_num; 步骤M、设置id的值为1; 步骤B5、计算seed; 步骤 B6、若 id > threads_num,则转到步骤 C; 步骤B7、id值自增1,然后返回步骤B5; 步骤C、MIC线程进行计算,包括 步骤Cl、设置i的初始值为0,U的初始值为0; 步骤C2、通过随机数串行算法计算U; 步骤 C3、result =U; 步骤C4、gi>num,则结束该线程;步骤C5、i值自增1,然后返回步骤C3。 专利技术的效果本专利技术利用对周期序列分段的方法进行并行化,最后将各个线程生成的随机数拼 接起来形成最终的序列。相对于CHJ单线程,MIC平台下的加速比具有明显优势。【附图说明】图1为随机数发生器分段式并行化原理图;图2为基于MIC实现随机数发生器并行化的计算流程图; 图3a和图3b为MRG32k3a基于CPU和MIC并行化后的加速比趋势图。【具体实施方式】以下将结合实施例详细说明本专利技术的各种示例性实施例、特征和方面。为了更好 的说明本专利技术,在下文的【具体实施方式】中给出了众多的具体细节。本领域技术人员应当理 解,没有这些具体细节,本专利技术同样可以实施。在另外一些实例中,对于大家熟知的方法、手 段、材料未作详细描述,以便于凸显本专利技术的主旨。如图1所示,本专利技术利用对周期序列分段的方法进行并行化。首先将周期为P的原 始随机数序列平均划分成N段(N为最大可支持的线程数),每段包含i = f个数,然后每个线 程从各段的起点开始递推生成随机数。假设random_num为需要生成的随机数的总量, threads_num为分配的线程数,则每个线程产生random_num/threads_num个随机数。最后将 各个线程生成的随机数拼接起来形成最终的序列。 包括以下步骤:步骤A、获取划分步骤,包括步骤A1、获取原始随机数序列的周期P; 步骤A2、获取可支持的最大线程数N,每线程可产生的随机数个数I = # . 9 步骤B、主线程读取参数,计算各线程初始状态Seed,包括 步骤B1、主线程读取所需要的随机数数量random_num、分配的线程数threads_num 以及种子seed,其中 0< random_num < P、0 < thr eads_num < N; 步骤B2、建立内存区间result; 步骤B3、计算各线程需要产生的随机数num = random_num/threads_num; 步骤Μ、设置id的值为1;步骤B5、计算seed;步骤 B6、若 i d > threads_num,则转到步骤 C; 步骤B7、id值自增1,然后返回步骤B5; 步骤C、MIC线程进行计算,包括 步骤Cl、设置i的初始值为0,U的初始值为0;步骤C2、通过随机数串行算法计算U;步骤 C3、result =U; 步骤C4、gi>num,则结束该线程;步骤C5、i值自增1,然后返回步骤C3。在一种可能的实施方式中,本专利技术包括以下步骤: 1.准备工作 a)研究随机数发生器串行算法,并获取其周期P; b)确定周期划分规则:可支持的线程数N,每线程可产生的随机数个数i = f 八O 2.主线程:读取相应参数,计算各线程初始状态Seed a)读取所需要的随机数数量random_num、分配的线程数threads_num以及种子 seed,其中 0< random_num < P、0 < thr eads_num < N; b)建立内存区间result; c)计算各线程需要产生的随机数num = random_num/threads_num; d) id = 1 ; e)计算seed; f)若 id>threads_num,则转 3; g)id++,Re)。 3. MIC线程:通过native、off load等方式控制MIC设备,各线程同步工作,进行以下 相同计算,如图2所示, a) i = 0 ,U = O ; b)通过随机数串行算法计算U; c)result =U; d)gi>num,则结束; e)i++,Rc)。 在一种可能的实施方式中,本专利技术的步骤为 通过native方式控制MIC设备,使用C++实现随机数发生器MRG32k3a分段式并行化 为例,MRG32k3a递推公式为: 其中η 2 3, ai,2 = 1403580 ai,3 = -810728 a2,1 = 527612 a2,3 = -1370589 mi = 232-209 m2 = 232-2 2 8 5 3 产生[0,1)之间的均匀随机数Un。 Zn= (xi,n+X2,n)m〇d Π11 其周期P = 2192,设定最多运行本文档来自技高网...

【技术保护点】
一种基于MIC的随机数发生器分段式并行化方法,其特征在于,包括以下步骤:步骤A、获取划分步骤,包括步骤A1、获取原始随机数序列的周期ρ;步骤A2、获取可支持的最大线程数N,每线程可产生的随机数个数步骤B、主线程读取参数,计算各线程初始状态8eed[id],包括步骤B1、主线程读取所需要的随机数数量random_num、分配的线程数threads_num以及种子seed,其中0<random_num<ρ、0<threads_num<N;步骤B2、建立内存区间result;步骤B3、计算各线程需要产生的随机数num=random_num/threads_num;步骤B4、设置id的值为1;步骤B5、计算seed[id];步骤B6、若id>threads_num,则转到步骤C;步骤B7、id值自增1,然后返回步骤B5;步骤C、MIC线程进行计算,包括步骤C1、设置i的初始值为0,U的初始值为0;步骤C2、通过随机数串行算法计算U;步骤C3、result[id*num+i]=U;步骤C4、若i>num,则结束该线程;步骤C5、i值自增1,然后返回步骤C3。

【技术特征摘要】

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

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

1