论文部分内容阅读
高质量的随机数对于很多科学应用是极其重要的,其中一个应用甚广的例子就是蒙特卡罗技术,它在生物医学、计算物理学(如空气动力学计算等、粒子输运计算、量子热力学计算)、金融工程学、宏观经济学等众多领域都有十分重要的应用。在蒙特卡罗计算过程中,需要应用到大量随机性优秀的随机数,随机数的随机性取决于随机数的周期与分布性,这是蒙特卡罗计算能够正确进行的关键以及基础,会影响到蒙特卡罗德计算结果是否正确。相对于其他实现随机数生成器的方式,基于FPGA的随机数生成加速器在加速效果、功耗以及成本等很多方面上都具有出色的性能表现,并且符合应用FPGA实现大规模计算的趋势。本文的主要工作就是对面向蒙特卡罗计算的随机数生成FPGA加速器的研究,本文以提高随机数加速器硬件结构的并行性、减少硬件资源消耗、提高随机数加速器的可重构性为研究目标,对随机数生成FPGA加速器的并行化以及可重构性设计进行了深入的研究,主要贡献和创新之处有以下几方面:1、为了提高基于FPGA的随机数加速器硬件结构的并行性,设计并实现了MTPRNG(Mersenne Twister Parallel Random NumberGenerator)硬件结构。MTPRNG硬件结构并行化的实现了MT19937算法,相对于其他基于FPGA的Mersenne Twister算法实现结构,MTPRNG在硬件资源消耗以及硬件资源利用率上具有比较好的性能。2、为了实现可重构的随机数生成FPGA加速器,对Fast-jump-ahead快速跳变算法进行了深入的研究,结合Mersenne Twister算法的自身特点,在软件上实现了针对Mersenne Twister算法的Fast-jump-ahead快速跳变算法的计算过程,用于快速计算随机数子序列。3、为了提高随机数生成FPGA加速器的可重构性,设计并实现了软硬件协同工作的可重构随机数生成FPGA加速器。加速器的硬件部分由若干个MTPRNG并行化硬件结构组成,软件部分采用Fast-jump-ahead快速跳变技术计算出随机数子序列的值,作为初始化数据提供给硬件部分,同时软件部分根据用户需求生成控制信号,来控制硬件部分中若干MTPRNG结构进行组合。相对于其他随机数生成器,这种可重构随机数生成FPGA加速器的设计方法,可实现出任意并行度的随机数生成FPGA加速器,并且在并行度改变时,不需要对硬件结构进行重新的布局布线。4、为了验证本文设计的随机数生成FPGA加速器的性能,本文将可重构随机数生成FPGA加速器应用在实际的蒙特卡罗计算应用中,对π值进行估算。最终得到π值得精度达到99.99%。结果表明本文设计的结构是可以满足蒙特卡罗计算的需要的。