CN105843587A - 一种基于mic的随机数发生器跳跃式并行化方法 - Google Patents
一种基于mic的随机数发生器跳跃式并行化方法 Download PDFInfo
- Publication number
- CN105843587A CN105843587A CN201610149155.0A CN201610149155A CN105843587A CN 105843587 A CN105843587 A CN 105843587A CN 201610149155 A CN201610149155 A CN 201610149155A CN 105843587 A CN105843587 A CN 105843587A
- Authority
- CN
- China
- Prior art keywords
- random number
- thread
- sequence
- mic
- randomizer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000012360 testing method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开一种基于MIC的随机数发生器跳跃式并行化方法,根据系统分配的线程数将随机数发生器的随机数序列划分成与所述分配的线程数数量相同的子序列;每个线程从各子序列的起点开始生成随机数;各个线程生成的随机数序列按原始序列的顺序重新组合。相对于CPU单线程,本方法在MIC平台下的加速比具有明显优势。
Description
技术领域
本发明涉及常规类型随机数发生器的一种跳跃式并行化方法,尤指针对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平台下的加速比具有明显优势。
虽然已经参照以上实施方式说明了本发明,但是,应该理解的是本发明不限于所公开的实施方式。所附权利要求书的范围应在最宽泛的范围内进行解释,以涵盖所有变型、等同结构和功能。
Claims (2)
1.一种基于MIC的随机数发生器跳跃式并行化方法,其特征在于,包括以下步骤:
步骤A、根据系统分配的线程数将随机数发生器的随机数序列划分成与所述分配的线程数数量相同的子序列;
步骤B、每个线程从各子序列的起点开始生成随机数;
步骤C、各个线程生成的随机数序列按原始序列的顺序重新组合。
2.根据权利要求1所述的基于MIC的随机数发生器跳跃式并行化方法,其特征在于,包括以下步骤:
步骤A、根据系统分配的线程数将随机数发生器的随机数序列划分成与所述分配的线程数数量相同的子序列;
步骤B、每个线程从各子序列的起点开始生成随机数,
其中,第一子序列的起点为所述随机数发生器的种子元素,
随后子序列的起点为所述随机数发生器根据所述种子元素依次递推生成的元素;
步骤C、各个线程生成的随机数序列按原始序列的顺序重新组合,当MIC完成计算时,每个线程将各自生成的随机数填充到预先分配好的内存中以供使用,序列的填充顺序与原始序列保持一致。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610149155.0A CN105843587A (zh) | 2016-03-16 | 2016-03-16 | 一种基于mic的随机数发生器跳跃式并行化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610149155.0A CN105843587A (zh) | 2016-03-16 | 2016-03-16 | 一种基于mic的随机数发生器跳跃式并行化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105843587A true CN105843587A (zh) | 2016-08-10 |
Family
ID=56587236
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610149155.0A Pending CN105843587A (zh) | 2016-03-16 | 2016-03-16 | 一种基于mic的随机数发生器跳跃式并行化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105843587A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648543A (zh) * | 2016-12-29 | 2017-05-10 | 北京握奇智能科技有限公司 | 一种随机数生成方法及装置 |
CN109521997A (zh) * | 2018-11-16 | 2019-03-26 | 中国人民解放军战略支援部队信息工程大学 | 用于共享存储多线程并行执行的随机数生成方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120105462A1 (en) * | 2010-10-28 | 2012-05-03 | Mizuho-Dl Financial Technology Co., Ltd. | Parallelization of random number generation processing by employing gpu |
CN103475469A (zh) * | 2013-09-10 | 2013-12-25 | 中国科学院数据与通信保护研究教育中心 | 一种结合cpu和gpu实现sm2算法的方法及装置 |
-
2016
- 2016-03-16 CN CN201610149155.0A patent/CN105843587A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120105462A1 (en) * | 2010-10-28 | 2012-05-03 | Mizuho-Dl Financial Technology Co., Ltd. | Parallelization of random number generation processing by employing gpu |
CN103475469A (zh) * | 2013-09-10 | 2013-12-25 | 中国科学院数据与通信保护研究教育中心 | 一种结合cpu和gpu实现sm2算法的方法及装置 |
Non-Patent Citations (2)
Title |
---|
JUN MAKINO: "Generation of shift register random numbers on vector processors", 《COMPUTER PHYSICS COMMUNICATION》 * |
顾小璐 等: "基于MIC的GFSR(521,32)并行化设计与实现", 《计算机科学》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648543A (zh) * | 2016-12-29 | 2017-05-10 | 北京握奇智能科技有限公司 | 一种随机数生成方法及装置 |
CN106648543B (zh) * | 2016-12-29 | 2019-09-27 | 北京握奇智能科技有限公司 | 一种随机数生成方法及装置 |
CN109521997A (zh) * | 2018-11-16 | 2019-03-26 | 中国人民解放军战略支援部队信息工程大学 | 用于共享存储多线程并行执行的随机数生成方法及装置 |
CN109521997B (zh) * | 2018-11-16 | 2020-10-30 | 中国人民解放军战略支援部队信息工程大学 | 用于共享存储多线程并行执行的随机数生成方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111242289B (zh) | 一种规模可扩展的卷积神经网络加速系统与方法 | |
Garanzha et al. | Simpler and faster HLBVH with work queues | |
Cheung et al. | A large-scale spiking neural network accelerator for FPGA systems | |
CN105576648B (zh) | 一种基于gpu-cpu异构计算平台的静态安全分析双层并行方法 | |
CN103617150A (zh) | 一种基于gpu的大规模电力系统潮流并行计算系统及其方法 | |
CN110533164A (zh) | 一种面向卷积神经网络加速器的Winograd卷积拆分方法 | |
CN104182209B (zh) | 一种基于PETSc的GCRO‑DR算法并行处理方法 | |
CN105843587A (zh) | 一种基于mic的随机数发生器跳跃式并行化方法 | |
CN108985449B (zh) | 一种对卷积神经网络处理器的控制方法及装置 | |
CN108710943A (zh) | 一种多层前馈神经网络并行加速器 | |
CN116187870A (zh) | 电力系统碳轨迹追溯的方法、装置、设备及存储介质 | |
CN102520908B (zh) | 一种伪随机数生成器及伪随机数生成方法 | |
CN109522127A (zh) | 一种基于gpu的流体机械仿真程序异构加速方法 | |
CN106026107A (zh) | 一种gpu加速的电力潮流雅可比矩阵的qr分解方法 | |
CN110880754A (zh) | 一种全网受阻电量确定方法和系统 | |
CN104536831A (zh) | 一种基于多目标优化的多核SoC软件映射方法 | |
CN105843588A (zh) | 一种基于mic的随机数发生器分段式并行化方法 | |
CN106354479A (zh) | 一种大量同构稀疏矩阵的gpu加速qr分解方法 | |
CN107292447A (zh) | 一种基于小数据量法的短期风速预测方法及系统 | |
CN104268435A (zh) | 一种计算多机平衡的概率潮流的方法 | |
CN104200001B (zh) | 标杆风机的选取方法 | |
CN106708973A (zh) | 一种蒙特卡洛逆向求解PageRank问题的加速方法 | |
CN116303219A (zh) | 一种网格文件的获取方法、装置及电子设备 | |
CN113780529B (zh) | 一种面向fpga的稀疏卷积神经网络多级存储计算系统 | |
CN103793745B (zh) | 一种分布式粒子群优化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160810 |
|
WD01 | Invention patent application deemed withdrawn after publication |