一种基于云计算的蒙特卡洛仿真加速方法及系统的制作方法

文档序号:9579117阅读:524来源:国知局
一种基于云计算的蒙特卡洛仿真加速方法及系统的制作方法
【技术领域】
[0001]本发明属于云计算技术领域,尤其涉及一种基于云计算的蒙特卡洛仿真加速方法及系统。
【背景技术】
[0002]蒙特卡洛(Monte Carlo,MC)方法又称随机抽样技巧或统计试验方法,与一般数值计算方法有很大区别,它是以概率统计理论为基础的一种方法。蒙特卡洛方法能够比较逼真地描述事物的特点及物理实验过程,解决一些数值方法难以解决的问题,因而该方法有着广泛的应用领域。
[0003]蒙特卡洛方法的优点包括:能够较逼真地描述具有随机性质的事物的特点及物理实验过程;受几何条件限制小;收敛速度与问题的维数无关;具有同时计算多个方案和多个未知量的能力;误差容易确定;程序结构简单,易于实现。这些优点使它的应用范围越来越广。该方法的主要应用包括:粒子输运问题、统计物理、典型数学问题、真空技术、激光技术、医学、生物、探矿等方面。其中在粒子输运问题中的应用主要涵盖实验核物理、反应堆物理、高能物理等方面。
[0004]蒙特卡洛方法的缺点也比较突出,包括收敛速度慢;误差具有概率性;在粒子输运问题中,计算结果与系统大小有关。当使用蒙特卡洛仿真解决较复杂问题(或模型)时,收敛速度慢的问题显得尤为突出。此外,为了提高仿真精度(即与真实解的逼近程度),蒙特卡洛方法要求随机数的数量要达到百万甚至千万级别。较慢的收敛速度和庞大的随机数数量使得蒙特卡洛仿真的计算量猛增,耗时严重,这限制了该方法在实时性要求高的领域(如放射治疗规划)中的应用。
[0005]蒙特卡洛方法中,由于各随机数(或粒子)在模型中的随机过程互相独立,因此,可以进行并行计算。一般各蒙特卡洛程序均具有并行计算特性,即将计算任务分解,得到可以单独计算的子任务,交给计算单元进行计算后得到子结果,再进行结果的合并。蒙特卡洛仿真加速方法均是依据这一特性进行的。
[0006]现有蒙特卡洛仿真加速方法包括:
[0007](I)基于CPU集群的蒙特卡洛仿真加速方法
[0008]在高性能计算领域,CPU集群计算法开展比较早。国内比较成熟的超级计算机大多采用成百上千的CPU阵列。目前MPI是最重要的并行编程实现途径,它定义了一组具有可移植性的编程接口,因此程序员只需要设计好并行算法,调用MPI库中的相关函数就可以实现在多个计算单元上的运算。如长沙理工大学的卢云娥,在其发表的论文《基于微机集群系统的MPI并行计算》中,作者通过MPI并行程序设计,实现了利用蒙特卡洛积分法求PI值的加速计算。实验表明:并行程序设计使用多计算机集群进行求解较使用单台计算机的计算速度要快。又如山东科技大学的傅游,在其发表的论文《稀薄气体直接仿真蒙特卡洛方法交互式并行化系统研究与实现》中,采用了 8节点集群系统,实现了稀薄气体直接仿真蒙特卡洛方法交互式并行化计算。作者将基于Fortran 77串行DSMC源程序转化为MPI环境下的并行源程序,取得了较好的加速效果。
[0009](2)基于GPU (集群)的蒙特卡洛仿真加速方法
[0010]GPU英文全称是Graphic Processing Unit,中文翻译为“图形处理器”。GPU相当于显卡的“大脑”,是专门的图像核心处理器。GPU最大的特性就是拥有强大的运算能力,甚至比CPU的运算能力要强大很多倍。有效地利用GPU空闲时间,发挥GPU的潜能成为业界关注的焦点,也就是所谓的"GPU硬件加速"。GPU的高速度、并行性以及可编程功能为图像处理以外的通用计算提供了良好的运行平台,使GPU在代数计算、偏微分方程求解和优化问题等方面有了较好的应用。CUDA(Compute Unified Device Architecture)是显卡厂商NVIDIA推出的一种通用并行计算架构,目前使用较广泛。CUDA包含了指令集架构(ISA)以及GPU内部的并行计算引擎,开发人员可以使用C语言来编写程序,能够在支持CUDA的GPU上以超高性能运行。如华中科技大学的全国涛博士,在其博士毕业论文《稳态荧光分子层析成像重构算法理论与实验研究》中,提出了一种利用GPU集群加速的基于蒙特卡洛方法的稳态焚光分子成像(Fluorescence Molecular Tomography, FMT)重构算法。该方法利用局域网中3台配备NVIDIA显卡的计算机,通过Message Passing Interface (MPI)技术建立起GHJ集群,将总的计算任务平均分配到3个计算节点上,实现了多个GPU并行计算。其中3台计算机配备的NVIDIA显卡均为G200,GPU程序是基于CUDA编写。作者利用GPU集群进行加速,解决了将MC方法用于FMT重构中存在的巨大时间消耗问题,取得了较好的加速效果。又如华中科技大学的贺永翔,在其发表的论文《气体动力学直接模拟Monte Carlo的高效GPU并行计算》中,实现了基于CUDA的气体动力学直接Monte Carlo仿真的并行计算。作者采用NVIDA Tesla C2075 GPU进行了单GPU、双GPU和多GPU的加速实验,相对CPU计算,取得了很好的加速效果,且保证了计算精度。
[0011]现有蒙特卡洛仿真加速方法存在的缺点在于:
[0012](1)利用CUDA等语言开发GPU并行加速程序时,开发人员需要具备并行思路,开发的程序难于调试且要不断优化才能取得较好的加速效果。
[0013](2)购置超级计算机实现CPU集群,成本高昂;而利用多台电脑搭建的小型CPU集群,计算能力有限。利用MPI技术进行并行程序开发,需要自行进行内存、线程管理,难度较大。此外,本地计算机集群需要不断维护,增加人员成本。

【发明内容】

[0014]本发明提供了一种基于云计算的蒙特卡洛仿真加速方法及系统,旨在至少在一定程度上解决现有技术中的上述技术问题之一。
[0015]本发明实现方式如下,一种基于云计算的蒙特卡洛仿真加速方法,包括以下步骤:
[0016]步骤a:在本地计算机上安装Hadoop和蒙特卡洛软件,并配置Hadoop运行在伪分布模式;
[0017]步骤b:在本地计算机上编写MapReduce程序,并制作仿真输入文本;
[0018]步骤c:在云端制作安装有Hadoop和蒙特卡洛软件的机器镜像,利用制作的机器镜像实例化一定数量的虚拟服务器,并配置云端所有虚拟服务器上的Hadoop运行在全分布模式,形成Hadoop集群;
[0019]步骤d:将本地MapReduce程序和仿真输入文本上传至虚拟服务器,并在云端Hadoop集群上运行MapReduce,进行蒙特卡洛仿真的分布式计算。
[0020]本发明实施例采取的技术方案还包括:在所述步骤b中,所述编写MapReduce程序具体包括:
[0021]步骤bl:编写map程序,程序依次包括从标准输入读取仿真计算任务、调用蒙特卡洛程序进行仿真计算、将计算结果以键值对的形式写入标准输出;
[0022]步骤b2:编写reduce程序,程序依次包括从标准输入读取具有相同键的仿真计算结果、将计算结果进行合并、将合并的结果以键值对的形式写入标准输出;
[0023]步骤b3:编写Hadoop Streaming作业程序,程序包括map和reduce程序的输入输出流格式、Map和Reduce任务数、输入文本名称、输出路径、mapper和reducer文件名及上传文件路径。
[0024]本发明实施例采取的技术方案还包括:在所述步骤b中,所述制作仿真输入文本具体包括:
[0025]步骤b4:如果蒙特卡洛软件的输入是随机数,就生成实际仿真所需随机数;如果输入是程序文件,就生成实际仿真所需程序文件;
[0026]步骤b5:根据要进行并行计算的规模,对随机数进行分组或对程序文件进行分解,每组随机数或每个子程序文件对应一个并行仿真;
[0027]步骤b6:将随机数或程序文件的路径按行写入一个文本,作为输入文件。
[0028]本发明实施例采取的技术方案还包括:所述步骤b还包括:在本地计算机上运行Hadoop Streaming,调试MapReduce程序和验证仿真输入文本。
[0029]本发明实施例采取的技术方案还包
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1