CN109521997B - 用于共享存储多线程并行执行的随机数生成方法及装置 - Google Patents

用于共享存储多线程并行执行的随机数生成方法及装置 Download PDF

Info

Publication number
CN109521997B
CN109521997B CN201811367546.5A CN201811367546A CN109521997B CN 109521997 B CN109521997 B CN 109521997B CN 201811367546 A CN201811367546 A CN 201811367546A CN 109521997 B CN109521997 B CN 109521997B
Authority
CN
China
Prior art keywords
random number
random
thread
dimensional array
generation
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.)
Expired - Fee Related
Application number
CN201811367546.5A
Other languages
English (en)
Other versions
CN109521997A (zh
Inventor
徐金龙
高明
崔燕君
黄亮明
李颖颖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Information Engineering University of PLA Strategic Support Force
Original Assignee
Information Engineering University of PLA Strategic Support Force
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Information Engineering University of PLA Strategic Support Force filed Critical Information Engineering University of PLA Strategic Support Force
Priority to CN201811367546.5A priority Critical patent/CN109521997B/zh
Publication of CN109521997A publication Critical patent/CN109521997A/zh
Application granted granted Critical
Publication of CN109521997B publication Critical patent/CN109521997B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes

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)
  • Advance Control (AREA)

Abstract

本发明属于高性能计算机并行处理技术领域,特别涉及一种用于共享存储多线程并行执行的随机数生成方法及装置,该方法包含:针对每个线程,建立独立的随机数产生器;针对每个线程,通过随机数产生器生成相互之间不存在变量重用的随机数。本发明通过在伪随机序列中引入随机因素和多线程随机数生成的依赖消除,充分利用共享存储的硬件结构优势,提高线程执行效率,并提高处理器乃至计算机系统性能的利用率,降低运行开销,有效提高随机数的生成质量和随机数的生成速度,为蒙特卡洛方法提供更优质快速的随机数基础支撑,对共享存储多线程并行处理技术具有重要的指导意义。

Description

用于共享存储多线程并行执行的随机数生成方法及装置
技术领域
本发明属于高性能计算机并行处理技术领域,特别涉及一种用于共享存储多线程并行执行的随机数生成方法及装置。
背景技术
基于随机数的蒙特卡洛方法是现代科学研究的强大方法之一,广泛应用于分子机结构研究、数值计算方法、管理科学等领域,如高分子材料模拟问题,高维积分问题,库存系统仿真等。在用蒙特卡罗方法研究一个实际问题时,通常需要尽快地产生巨量的随机数。在计算机上通过某一公式经过算术或者逻辑运算生成数值序列是十分快捷方便的。显然计算机上用数学方法产生随机数,实际上是通过特定的算法一步一步产生的,数值之前存在某种关联,严格地讲,这种数值序列并非真正的随机数,我们称之为伪随机数。这种伪随机数只要符合一定的条件,可以当作真正的随机数来用,这些条件包括抽样的随机性,分布的独立性和均匀性等。常用的生成随机数的数学方法是线性同余法,该方法利用数论中同余运算原理产生随机数,它又可以分为乘同余法、加同余法和混合同余法三种,如图2所示,在多线程条件下,由于rand()是通过递推方式来产生随机数,如果每个线程都调用rand()将会导致线程阻塞,严重降低随机数生成的速度。
发明内容
为此,本发明提供一种用于共享存储多线程并行执行的随机数生成方法及装置,充分利用系统硬件性能,满足多线程并行需求,提高随机数生成速率和随机性。
按照本发明所提供的设计方案,一种用于共享存储多线程并行执行的随机数生成方法,包含:
针对每个线程,建立独立的随机数种子;
针对每个线程,基于各自独立的随机数种子,生成自己独立的随机数序列。
上述的,通过数组实现为每个线程建立独立的随机数种子,每个数组元素对应一个随机数种子,每个随机数种子对应一个随机数产生器。
优选的,随机数产生器生成随机数过程中引入随机因素,将该随机因素与种子变量进行运算,依据运算结果获取随机数。
更进一步,所述引入随机因素包含如下内容:首先获取当前节拍数,然后,将获取的当前节拍数作为变量,与种子变量进行运算。
上述的,设定为线程建立的独立随机数产生器有N个,每个随机数产生器负责M个随机数的生成;每个线程将自己的种子指针作为参数传递给随机数产生器来产生自己的随机数序列,解决内部变量重用引起的依赖。
优选的,生成随机数过程中,设定一个一维数组用来存放随机数种子,每个一维数组元素对应一个随机数产生器;设定一个二维数组用来存放生成的随机数,二维数组中的每一行对应一个随机数产生器生成的一组随机数序列;通过循环初始化该一维数组,在每次循环迭代中,通过引入随机因素,并以该随机因素作为变量对一维数组中的元素进行初始化;然后,通过两层循环迭代计算随机数,在每次循环迭代中,再次通过引入随机因素并将该随机因素与种子变量进行运算,依据运算结果获取随机数,将该随机数赋值给相应的二维数组元素。
更进一步,所述随机因素为通过函数获取迭代循环过程中的当前节拍数。
一种用于共享存储多线程并行执行的随机数生成装置,包含随机数产生器建立模块和随机数生成模块,其中,
随机数产生器建立模块,用于针对每个线程,建立独立的随机数产生器;
随机数生成模块,用于针对每个线程,通过独立的随机数产生器生成随机数。
上述的装置中,随机数生成模块包含初始化子模块和生成子模块,其中,
初始化子模块,用于对随机数产生器进行初始化,即对随机数种子进行初始化;
生成子模块,用于生成随机数并存放到二维数组中,每一行对应一个随机数生成器产生的随机数序列。生成随机数过程中,通过两层循环迭代,在每次子循环迭代中,引入随机因素并将该随机因素与种子变量进行运算,依据运算结果获取随机数,将该随机数赋值给相应的二维数组元素。
本发明的有益效果:
本发明通过在伪随机序列中引入随机因素和多线程随机数生成的依赖消除,充分利用共享存储的硬件结构优势,提高线程执行效率,并提高处理器乃至计算机系统性能的利用率,降低运行开销,有效提高随机数的生成质量和随机数的生成速度,为蒙特卡洛方法提供更优质快速的随机数基础支撑,对共享存储多线程并行处理技术具有重要的指导意义。
附图说明:
图1为实施例中随机数生成方法流程示意图;
图2为实施例中现有生成随机数方法示意图;
图3为实施例中随机数生成装置示意图;
图4为实施例中随机数生成模块示意图。
具体实施方式:
为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
如图2所示,混合同余法一般在系统库函数中都有实现,头文件为<stdlib.h>,其对应的函数为srand(),rand()。在第一次调用rand()生成随机数之前需要先调用srand设置一个随机数的种子,而使用相同种子调用rand()会导致产生相同的随机数序列。原有的伪随机数生成方法:首先srand:设置种子,即对seed变量进行初始化。然后rand:基于种子seed,运用线性同余法生成随机数;将生成的随机数赋值给seed。先设置种子,之后每调用一次rand生成一次随机数,显然,每个随机数的值直接决定了下一个随机数的值,该方法生成的随机数序列对于每个种子来讲都是相同的。鉴于此,本发明实施例,参见图1所示,提供一种用于共享存储多线程并行执行的随机数生成方法,包含如下内容:
S101、针对每个线程,建立独立的随机数产生器;
S102、针对每个线程,通过独立的随机数产生器生成高质量随机数。
本发明实施例中,通过数组实现为每个线程建立独立的随机数产生器,每个数组元素对应一个随机数产生器。优选的,随机数产生器生成随机数过程中引入随机因素,将该随机因素与种子变量进行运算,依据运算结果获取随机数。更进一步,所述引入随机因素包含如下内容:首先获取当前节拍数,然后,将获取的当前节拍数作为变量,与种子变量进行运算。
多个线程并行运行过程中,本发明在一个实施例中,设定为线程建立的独立随机数产生器有N个,每个随机数产生器负责M个随机数的生成;每个线程将自己的种子指针作为参数传递给随机数产生器来产生相互之间不存在变量重用的随机数。优选的,生成随机数过程中,设定一个一维数组表示随机数产生器,每个一维数组元素指代一个线程对应的随机数产生器;二维数组表示生成的随机数,每个二维数组元素指代一个对应随机数产生器生成的一个随机数;通过循环初始化该一维数组,在每次迭代循环中,通过引入随机因素,并以该随机因素作为变量对一维数组中的元素进行初始化;然后,通过两层循环迭代,在每次循环迭代中,再次通过引入随机因素并将该随机因素与种子变量进行运算,依据运算结果获取随机数,将该随机数赋值给相应的二维数组元素,二维数组的每一行来源于一个随机数产生器。更进一步,所述随机因素为通过函数获取迭代循环过程中的当前节拍数。
设置更具随机性的种子,采用__rdtsc()函数获得当前的节拍数作为种子,每个节拍对应的时间通常小于1纳秒,能够基本保证两次函数调用获取的值不会相同,具有更好的随机性。每生成一个随机数后,改变其原有的直接赋值给seed的做法,通过将当前的节拍数以某种数学方式结合到当前随机数中生成新的随机数,将新的随机数赋值给seed变量。为了快速生成大量随机数,一般的做法是先设置一个种子,依据种子迭代地去生成新的随机数并重写种子变量,因此新的随机数依赖于老的随机数,其缺点不仅仅是会导致产生相同地随机数序列,在多线程条件下,还会引起线程之间的资源竞争,导致多线程生随机数反而会比单线程更慢,无法充分发挥多线程的并行优势。每个种子变量对应了一个随机数产生器,多线程共用一个种子变量,即共用了一个随机数产生器,从而导致了依赖。本发明实施例中的技术方案中依赖消除方法实际上是为每个线程提供独立的种子变量,各线程都有自己的独立的随机数产生器,各线程在生成随机数时相互之间不会存在变量的重用,从而大幅提升多线程并行生成随机数的效率。
基于上述的随机数生成方法,本发明实施例还提供一种用于共享存储多线程并行执行的随机数生成装置,参见图3所示,包含随机数产生器建立模块101和随机数生成模块102,其中,
随机数产生器建立模块101,用于针对每个线程,建立独立的随机数产生器;
随机数生成模块102,用于针对每个线程,通过随机数产生器生成相互之间不存在变量重用的随机数。
上述的装置中,参见图4所示,随机数生成模块102包含初始化子模块2001和生成子模块2002,其中,
初始化子模块2001,用于设定一个一维数组表示随机数产生器,每个一维数组元素指代一个线程对应的随机数产生器;二维数组表示生成的随机数,每个二维数组元素指代一个对应随机数产生器生成的一个随机数;通过迭代循环初始化该一维数组,在每次迭代循环中,通过引入随机因素,并以该随机因素作为变量对一维数组中的元素进行初始化;
生成子模块2002,用于通过两层循环迭代,在每次子循环迭代中,引入随机因素并将该随机因素与种子变量进行运算,依据运算结果获取随机数,将该随机数赋值给相应的二维数组元素。
为验证本发明技术方案的有效性,下面通过具体实例做进一步解释说明:
为了让不同的线程能够使用不同的种子,同时在随机数生成过程中加入随机因素,需要做两方面工作:
(1)改进的随机数生成函数,通过自定义myrand函数,该函数通过指针来传递种子,可以通过引用并修改外部的种子来生成新的随机数并为下次随机数生成做好准备,在每个随机数的生成过程中两次加入随机因素。该函数伪代码可设计如下内容:
Figure BDA0001868982460000061
(2)为每个线程建立不同的种子变量,通过数组来实现,每个数组元素对应一个随机数产生器。在使用之前需要首先对种子数组进行初始化,然后每个线程将自己种子的指针作为参数传递给myrand函数并进行随机数生成。
下面的代码示例展示了多线程条件下随机数初始化及生成步骤。代码示例采用了节拍数和迭代号组合计算值来对种子进行初始化;示例中定义了N个随机数种子,对应了N个随机数产生器,每个随机数产生器负责M个随机数的生成;同时,代码中加入了OpenMP的指示来实现随机数生成过程的线程级并行化。
Figure BDA0001868982460000071
通过上述技术方案在4核4线程的计算机平台上做验证,能够明显提升多线程并行生成随机数的速度和质量,可达到原有随机数生成速度的3倍以上,并且极少发生数值重复的现象。
基于上述的方法,本发明实施例还提供一种服务器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述的方法。
基于上述的方法,本发明实施例还提供一种计算机可读介质,其上存储有计算机程序,其中,该程序被处理器执行时实现上述的方法。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (7)

1.一种用于共享存储多线程并行执行的随机数生成方法,其特征在于,包含:
针对每个线程,建立独立的随机数产生器;
针对每个线程,通过随机数产生器生成相互之间不存在变量重用的随机数,以充分利用共享存储硬件结构来确保随机数的生成质量和随机数的生成速度;通过自定义myrand函数,利用指针来传递种子,通过引用并修改外部种子来生成新的随机数并为下次随机数生成做准备,在每个随机数生成过程中两次加入随机因素;为每个线程建立不同的种子变量;
通过数组实现为每个线程建立独立的随机数产生器,每个数组元素对应随机数产生器;使用之前首先对种子数组初始化,然后每个线程将自己种子的指针作为参数传递给myrand函数并进行随机数生成;
随机数产生器生成随机数过程中引入随机因素,将该随机因素与种子变量进行运算,依据运算结果获取随机数;所述引入随机因素包含如下内容:首先获取当前节拍数,然后,将获取的当前节拍数作为变量,与种子变量进行运算。
2.根据权利要求1所述的用于共享存储多线程并行执行的随机数生成方法,其特征在于,设定为线程建立的独立随机数产生器有N个,每个随机数产生器负责M个随机数的生成;每个线程将自己的种子指针作为参数传递给随机数产生器来产生相互之间不存在变量重用的随机数。
3.根据权利要求2所述的用于共享存储多线程并行执行的随机数生成方法,其特征在于,生成随机数过程中,设定一个一维数组表示随机数产生器,每个一维数组元素指代一个线程对应的随机数产生器;二维数组表示生成的随机数,每个二维数组元素指代一个对应随机数产生器生成的一个随机数;通过迭代循环初始化该一维数组,在每次迭代循环中,通过引入随机因素,并以该随机因素作为变量对一维数组中的元素进行初始化;然后,通过两层循环迭代,在每次循环迭代中,再次通过引入随机因素并将该随机因素与种子变量进行运算,依据运算结果获取随机数,将该随机数赋值给相应的二维数组元素。
4.根据权利要求3所述的用于共享存储多线程并行执行的随机数生成方法,其特征在于,所述随机因素为通过函数获取迭代循环过程中的当前节拍数。
5.一种用于共享存储多线程并行执行的随机数生成装置,其特征在于,基于权利要求1所述的用于共享存储多线程并行执行的随机数生成方法实现,包含随机数产生器建立模块和随机数生成模块,其中,
随机数产生器建立模块,用于针对每个线程,建立独立的随机数产生器;
随机数生成模块,用于针对每个线程,通过随机数产生器生成相互之间不存在变量重用的随机数。
6.根据权利要求5所述的用于共享存储多线程并行执行的随机数生成装置,其特征在于,随机数生成模块包含初始化子模块和生成子模块,其中,
初始化子模块,用于设定一个一维数组表示随机数产生器,每个一维数组元素指代一个线程对应的随机数产生器;二维数组表示生成的随机数,每个二维数组元素指代一个对应随机数产生器生成的一个随机数;通过迭代循环初始化该一维数组,在每次迭代循环中,通过引入随机因素,并以该随机因素作为变量对一维数组中的元素进行初始化;
生成子模块,用于通过两层循环迭代,在每次子循环迭代中,引入随机因素并将该随机因素与种子变量进行运算,依据运算结果获取随机数,将该随机数赋值给相应的二维数组元素。
7.根据权利要求6所述的用于共享存储多线程并行执行的随机数生成装置,其特征在于,所述随机因素为通过函数获取迭代循环过程中的当前节拍数。
CN201811367546.5A 2018-11-16 2018-11-16 用于共享存储多线程并行执行的随机数生成方法及装置 Expired - Fee Related CN109521997B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811367546.5A CN109521997B (zh) 2018-11-16 2018-11-16 用于共享存储多线程并行执行的随机数生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811367546.5A CN109521997B (zh) 2018-11-16 2018-11-16 用于共享存储多线程并行执行的随机数生成方法及装置

Publications (2)

Publication Number Publication Date
CN109521997A CN109521997A (zh) 2019-03-26
CN109521997B true CN109521997B (zh) 2020-10-30

Family

ID=65778353

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811367546.5A Expired - Fee Related CN109521997B (zh) 2018-11-16 2018-11-16 用于共享存储多线程并行执行的随机数生成方法及装置

Country Status (1)

Country Link
CN (1) CN109521997B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113138751B (zh) * 2020-01-17 2023-06-09 北京新能源汽车股份有限公司 一种随机数的处理方法、装置及汽车
CN117390610A (zh) * 2023-12-13 2024-01-12 中国人民解放军国防科技大学 一种身份标识生成方法、系统及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0790557A2 (en) * 1996-02-14 1997-08-20 Matsushita Electric Industrial Co., Ltd. Task managemant apparatus
CN101593132A (zh) * 2009-06-25 2009-12-02 北京航空航天大学 基于线程构造模块的多核并行模拟退火方法
CN105843587A (zh) * 2016-03-16 2016-08-10 浪潮电子信息产业股份有限公司 一种基于mic的随机数发生器跳跃式并行化方法
CN107645379A (zh) * 2017-09-29 2018-01-30 浙江科易理想量子信息技术有限公司 一种增加随机数发生器带宽的方法及系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101473298A (zh) * 2006-06-20 2009-07-01 Nxp股份有限公司 随机数发生器系统、产生随机数的方法
US9804826B2 (en) * 2014-12-05 2017-10-31 Nvidia Corporation Parallelization of random number generators
CN105843588A (zh) * 2016-03-16 2016-08-10 浪潮电子信息产业股份有限公司 一种基于mic的随机数发生器分段式并行化方法
CN107169807A (zh) * 2017-06-30 2017-09-15 广东工业大学 一种期权定价的方法、装置及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0790557A2 (en) * 1996-02-14 1997-08-20 Matsushita Electric Industrial Co., Ltd. Task managemant apparatus
CN101593132A (zh) * 2009-06-25 2009-12-02 北京航空航天大学 基于线程构造模块的多核并行模拟退火方法
CN105843587A (zh) * 2016-03-16 2016-08-10 浪潮电子信息产业股份有限公司 一种基于mic的随机数发生器跳跃式并行化方法
CN107645379A (zh) * 2017-09-29 2018-01-30 浙江科易理想量子信息技术有限公司 一种增加随机数发生器带宽的方法及系统

Also Published As

Publication number Publication date
CN109521997A (zh) 2019-03-26

Similar Documents

Publication Publication Date Title
Cho et al. Blueconnect: Decomposing all-reduce for deep learning on heterogeneous network hierarchy
Jung et al. Accelerating fully homomorphic encryption through architecture-centric analysis and optimization
Wang et al. Accelerating fully homomorphic encryption using GPU
US8996846B2 (en) System, method and computer program product for performing a scan operation
EP3362887B1 (en) Generating pseudorandom number sequences by nonlinear mixing of multiple subsidiary pseudorandom number generators
CN109521997B (zh) 用于共享存储多线程并行执行的随机数生成方法及装置
US9128791B1 (en) Generation of distinct pseudorandom number streams based on program context
Zhao et al. GPUMP: A multiple-precision integer library for GPUs
Wang et al. HE-Booster: an efficient polynomial arithmetic acceleration on GPUs for fully homomorphic encryption
Yang et al. FPGA accelerator for homomorphic encrypted sparse convolutional neural network inference
Ortega et al. Parallelizing AES on multicores and GPUs
Pu et al. Fastplay-a parallelization model and implementation of smc on cuda based gpu cluster architecture
Li et al. Efficient implementation for MD5-RC4 encryption using GPU with CUDA
US20150095389A1 (en) Method and system for generating pseudorandom numbers in parallel
Passerat-Palmbach et al. Reliable initialization of GPU-enabled parallel stochastic simulations using mersenne twister for graphics processors
Bahrami et al. An efficient parallel implementation of a light-weight data privacy method for mobile cloud users
US9804826B2 (en) Parallelization of random number generators
Seo SIKE on GPU: Accelerating supersingular isogeny-based key encapsulation mechanism on graphic processing units
CN115718622A (zh) 一种arm架构下的数据处理方法、装置及电子设备
Atanassov et al. Tuning the generation of Sobol sequence with Owen scrambling
Terzer et al. Parallel extreme ray and pathway computation
Honda et al. A warp-synchronous implementation for multiple-length multiplication on the GPU
US11392350B2 (en) Parallel generation of pseudorandom number sequences using multiple generators with brined initial states
Cabeleira et al. Memory-optimized Voronoi cell-based parallel kernels for the shortest vector problem on lattices
Tan et al. PLFG: a highly scalable parallel pseudo-random number generator for Monte Carlo simulations

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20201030

Termination date: 20211116