CN105335215B - 一种基于云计算的蒙特卡洛仿真加速方法及系统 - Google Patents
一种基于云计算的蒙特卡洛仿真加速方法及系统 Download PDFInfo
- Publication number
- CN105335215B CN105335215B CN201510885304.5A CN201510885304A CN105335215B CN 105335215 B CN105335215 B CN 105335215B CN 201510885304 A CN201510885304 A CN 201510885304A CN 105335215 B CN105335215 B CN 105335215B
- Authority
- CN
- China
- Prior art keywords
- hadoop
- monte carlo
- program
- simulation
- module
- 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.)
- Active
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种基于云计算的蒙特卡洛仿真加速方法及系统,包括:在本地计算机上安装Hadoop和蒙特卡洛软件,并配置Hadoop运行在伪分布模式;在本地计算机上编写MapReduce程序,并制作仿真输入文本;在云端制作安装有Hadoop和蒙特卡洛软件的机器镜像,利用制作的机器镜像实例化一定数量的虚拟服务器,并配置云端所有虚拟服务器上的Hadoop运行在全分布模式,形成Hadoop集群;将本地MapReduce程序和仿真输入文本上传至虚拟服务器,并在云端Hadoop集群上运行MapReduce,进行蒙特卡洛仿真的分布式计算。本发明可灵活选择虚拟服务器的数量和配置,在每个可接入网络的地方均可使用。
Description
技术领域
本发明属于云计算技术领域,尤其涉及一种基于云计算的蒙特卡洛仿真加速方法及系统。
背景技术
蒙特卡洛(Monte Carlo,MC)方法又称随机抽样技巧或统计试验方法,与一般数值计算方法有很大区别,它是以概率统计理论为基础的一种方法。蒙特卡洛方法能够比较逼真地描述事物的特点及物理实验过程,解决一些数值方法难以解决的问题,因而该方法有着广泛的应用领域。
蒙特卡洛方法的优点包括:能够较逼真地描述具有随机性质的事物的特点及物理实验过程;受几何条件限制小;收敛速度与问题的维数无关;具有同时计算多个方案和多个未知量的能力;误差容易确定;程序结构简单,易于实现。这些优点使它的应用范围越来越广。该方法的主要应用包括:粒子输运问题、统计物理、典型数学问题、真空技术、激光技术、医学、生物、探矿等方面。其中在粒子输运问题中的应用主要涵盖实验核物理、反应堆物理、高能物理等方面。
蒙特卡洛方法的缺点也比较突出,包括收敛速度慢;误差具有概率性;在粒子输运问题中,计算结果与系统大小有关。当使用蒙特卡洛仿真解决较复杂问题(或模型)时,收敛速度慢的问题显得尤为突出。此外,为了提高仿真精度(即与真实解的逼近程度),蒙特卡洛方法要求随机数的数量要达到百万甚至千万级别。较慢的收敛速度和庞大的随机数数量使得蒙特卡洛仿真的计算量猛增,耗时严重,这限制了该方法在实时性要求高的领域(如放射治疗规划)中的应用。
蒙特卡洛方法中,由于各随机数(或粒子)在模型中的随机过程互相独立,因此,可以进行并行计算。一般各蒙特卡洛程序均具有并行计算特性,即将计算任务分解,得到可以单独计算的子任务,交给计算单元进行计算后得到子结果,再进行结果的合并。蒙特卡洛仿真加速方法均是依据这一特性进行的。
现有蒙特卡洛仿真加速方法包括:
(1)基于CPU集群的蒙特卡洛仿真加速方法
在高性能计算领域,CPU集群计算法开展比较早。国内比较成熟的超级计算机大多采用成百上千的CPU阵列。目前MPI是最重要的并行编程实现途径,它定义了一组具有可移植性的编程接口,因此程序员只需要设计好并行算法,调用MPI库中的相关函数就可以实现在多个计算单元上的运算。如长沙理工大学的卢云娥,在其发表的论文《基于微机集群系统的MPI并行计算》中,作者通过MPI并行程序设计,实现了利用蒙特卡洛积分法求PI值的加速计算。实验表明:并行程序设计使用多计算机集群进行求解较使用单台计算机的计算速度要快。又如山东科技大学的傅游,在其发表的论文《稀薄气体直接仿真蒙特卡洛方法交互式并行化系统研究与实现》中,采用了8节点集群系统,实现了稀薄气体直接仿真蒙特卡洛方法交互式并行化计算。作者将基于Fortran 77串行DSMC源程序转化为MPI环境下的并行源程序,取得了较好的加速效果。
(2)基于GPU(集群)的蒙特卡洛仿真加速方法
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)技术建立起GPU集群,将总的计算任务平均分配到3个计算节点上,实现了多个GPU并行计算。其中3台计算机配备的NVIDIA显卡均为G200,GPU程序是基于CUDA编写。作者利用GPU集群进行加速,解决了将MC方法用于FMT重构中存在的巨大时间消耗问题,取得了较好的加速效果。又如华中科技大学的贺永翔,在其发表的论文《气体动力学直接模拟Monte Carlo的高效GPU并行计算》中,实现了基于CUDA的气体动力学直接Monte Carlo仿真的并行计算。作者采用NVIDA Tesla C2075GPU进行了单GPU、双GPU和多GPU的加速实验,相对CPU计算,取得了很好的加速效果,且保证了计算精度。
现有蒙特卡洛仿真加速方法存在的缺点在于:
(1)利用CUDA等语言开发GPU并行加速程序时,开发人员需要具备并行思路,开发的程序难于调试且要不断优化才能取得较好的加速效果。
(2)购置超级计算机实现CPU集群,成本高昂;而利用多台电脑搭建的小型CPU集群,计算能力有限。利用MPI技术进行并行程序开发,需要自行进行内存、线程管理,难度较大。此外,本地计算机集群需要不断维护,增加人员成本。
发明内容
本发明提供了一种基于云计算的蒙特卡洛仿真加速方法及系统,旨在至少在一定程度上解决现有技术中的上述技术问题之一。
本发明实现方式如下,一种基于云计算的蒙特卡洛仿真加速方法,包括以下步骤:
步骤a:在本地计算机上安装Hadoop和蒙特卡洛软件,并配置Hadoop运行在伪分布模式;
步骤b:在本地计算机上编写MapReduce程序,并制作仿真输入文本;
步骤c:在云端制作安装有Hadoop和蒙特卡洛软件的机器镜像,利用制作的机器镜像实例化一定数量的虚拟服务器,并配置云端所有虚拟服务器上的Hadoop运行在全分布模式,形成Hadoop集群;
步骤d:将本地MapReduce程序和仿真输入文本上传至虚拟服务器,并在云端Hadoop集群上运行MapReduce,进行蒙特卡洛仿真的分布式计算。
本发明实施例采取的技术方案还包括:在所述步骤b中,所述编写MapReduce程序具体包括:
步骤b1:编写map程序,程序依次包括从标准输入读取仿真计算任务、调用蒙特卡洛程序进行仿真计算、将计算结果以键值对的形式写入标准输出;
步骤b2:编写reduce程序,程序依次包括从标准输入读取具有相同键的仿真计算结果、将计算结果进行合并、将合并的结果以键值对的形式写入标准输出;
步骤b3:编写Hadoop Streaming作业程序,程序包括map和reduce程序的输入输出流格式、Map和Reduce任务数、输入文本名称、输出路径、mapper和reducer文件名及上传文件路径。
本发明实施例采取的技术方案还包括:在所述步骤b中,所述制作仿真输入文本具体包括:
步骤b4:如果蒙特卡洛软件的输入是随机数,就生成实际仿真所需随机数;如果输入是程序文件,就生成实际仿真所需程序文件;
步骤b5:根据要进行并行计算的规模,对随机数进行分组或对程序文件进行分解,每组随机数或每个子程序文件对应一个并行仿真;
步骤b6:将随机数或程序文件的路径按行写入一个文本,作为输入文件。
本发明实施例采取的技术方案还包括:所述步骤b还包括:在本地计算机上运行Hadoop Streaming,调试MapReduce程序和验证仿真输入文本。
本发明实施例采取的技术方案还包括:在所述步骤c中,所述配置云端所有虚拟服务器上的Hadoop运行在全分布模式具体包括:分别选择一个虚拟服务器作为Master和Secondary NameNode,其余虚拟服务器作为Worker;在本地计算机或云端任一虚拟服务器上,利用SSH通讯协议,依次依据虚拟服务器类型更改Hadoop配置文件,并将它们传输至相应的虚拟服务器上,替换原位置的配置文件;在Master虚拟服务器上进行Hadoop初始化操作,使Hadoop运行在完全分布模式,形成Hadoop集群。
本发明实施例采取的技术方案还包括:在所述步骤d中,所述运行云端MapReduce进行蒙特卡洛仿真的分布式计算具体为:运行Hadoop Streaming作业程序,MapReduce自动将map程序和reduce程序运行在不同的Worker虚拟服务器上,形成Map任务和Reduce任务;在Map任务中,map程序实现蒙特卡洛仿真任务的读取、仿真计算、中间结果输出;在Reduce任务中,reduce程序实现之间结果的读取、结果的合并及输出;通过Hadoop提供的监控页面对集群运行状态进行监控。
本发明实施例采取的技术方案还包括:所述步骤d还包括:仿真计算结束后,将云端仿真结果下载至本地计算机。
本发明实施例采取的另一技术方案为:一种基于云计算的蒙特卡洛仿真加速系统,包括模式配置模块、函数编写模块、文本制作模块、集群配置模块、数据传输模块和仿真计算模块;
所述模式配置模块用于在本地计算机上安装Hadoop和蒙特卡洛软件,配置Hadoop运行在伪分布模式下;
所述函数编写模块用于在本地计算机上编写用于蒙特卡洛仿真的MapReduce程序;
所述文本制作模块用于在本地计算机上制作仿真输入文本;
所述镜像制作模块用于在云端制作安装有Hadoop和蒙特卡洛软件的机器镜像,并利用制作的机器镜像实例化一定数量的虚拟服务器;
所述集群配置模块用于配置云端所有虚拟服务器上的Hadoop运行在全分布模式,形成Hadoop集群;
所述数据传输模块用于将本地计算机的MapReduce程序和仿真输入文本上传至虚拟服务器;
所述仿真计算模块用于在云端Hadoop集群上运行MapReduce,进行蒙特卡洛仿真的分布式计算。
本发明实施例采取的技术方案还包括:还包括函数调试模块,所述函数调试模块用于在本地计算机上运行Hadoop Streaming,调试MapReduce程序和验证仿真输入文本。
本发明实施例采取的技术方案还包括:还包括数据下载模块,所述数据下载模块用于在仿真计算结束后,将云端仿真结果下载至本地计算机。
本发明实施例的基于云计算的蒙特卡洛仿真加速方法及系统利用云平台提供的虚拟服务器搭建Hadoop集群,依托MapReduce框架实现分布式计算,用户只需要在自定义的map、reduce函数中实现对Monte Carlo程序的调用、中间结果处理等过程,在Hadoop集群中运行即可实现基于分布式计算框架MapReduce的Monte Carlo仿真加速。本发明是在云端实现的计算,可以灵活选择虚拟服务器的数量和配置,按时收费的方式保证成本可控,且在每个可接入网络的地方均可使用。
附图说明
图1是本发明实施例的基于云计算的蒙特卡洛仿真加速方法的流程图;
图2是本发明实施例的在本地计算机上编写MapReduce程序的方法的流程图;
图3是本发明实施例的在本地计算机上制作仿真输入文本的方法的流程图;
图4是云计算服务形式示意图;
图5是本发明实施例的基于云计算的蒙特卡洛仿真加速系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1,是本发明实施例的基于云计算的蒙特卡洛仿真加速方法的流程图。本发明实施例的基于云计算的蒙特卡洛仿真加速方法包括以下步骤:
步骤100:在本地计算机上安装Hadoop和蒙特卡洛软件,配置Hadoop运行在伪分布模式下;
在步骤100中,Hadoop是一个由Apache基金会开发的分布式计算架构,是一种开源软件。用户可以在不了解分布式底层细节的情况下,利用Hadoop开发分布式程序,充分利用集群的威力进行高速运算和存储。Hadoop的核心包括HDFS(Hadoop Distributed FileSystem,Hadoop分布式文件系统)和MapReduce框架,HDFS为海量数据提供存储,MapReduce框架为海量数据提供计算。
Hadoop包括三种运行模式:
(1)单机模式(Standalone Mode)
单机模式是Hadoop的默认模式,Hadoop会完全运行在本地。因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程。该模式主要用于开发调试MapReduce框架的应用逻辑。
(2)伪分布模式(Pseudo-Distributed Mode)
伪分布模式是Hadoop运行在“单节点集群”上,其中所有的守护进程都运行在同一台机器上,HDFS也是在本地文件系统内建立。该模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况、HDFS输入输出、以及其他的守护进程交互。在该模式下调试好的程序可以不加修改地运行在全分布模式下。
(3)全分布模式(Fully Distributed Mode)
Hadoop守护进程运行在一个集群上,实现真正的分布式计算和储存。其中守护进程运行在不同的机器上,HDFS也是在不同的机器上建立。集群中的机器有三种角色,master机器负责任务的调度,Secondary NameNode机器负责对master机器上关键数据的备份,而worker机器承担数据处理任务。
步骤200:在本地计算机上编写用于蒙特卡洛仿真的MapReduce程序;
为了清楚说明步骤200,请一并参阅图2,是本发明实施例的在本地计算机上编写MapReduce程序的方法的流程图。本发明实施例的在本地计算机上编写MapReduce程序的方法包括以下步骤:
步骤201:编写map程序,程序依次包括从标准输入(stdin)读取仿真计算任务、调用蒙特卡洛程序进行仿真计算、将计算结果以键值对(Key-Value-Pair,KVP)的形式写入标准输出(stdout);
步骤202:编写reduce程序,程序依次包括从stdin读取具有相同键(Key)的仿真计算结果、将计算结果进行合并、将合并的结果以KVP的形式写入stdout;
步骤203:编写Hadoop Streaming作业程序,程序包括map和reduce程序的输入输出流(stream)格式、Map和Reduce任务(task)数、输入文本名称、输出路径、mapper和reducer文件名、上传文件路径等。
步骤300:在本地计算机上制作仿真输入文本;
为了清楚说明步骤300,请一并参阅图3,是本发明实施例的在本地计算机上制作仿真输入文本的方法的流程图。本发明实施例的在本地计算机上制作仿真输入文本的方法包括以下步骤:
步骤301:如果蒙特卡洛软件的输入是随机数,就生成实际仿真所需随机数;如果输入是程序文件,就生成实际仿真所需程序文件;
步骤302:根据要进行并行计算的规模(线程数),对随机数进行分组或对程序文件进行分解,每组随机数或每个子程序文件对应一个并行仿真;
步骤303:将随机数或程序文件的路径按行写入一个(text)文本,作为输入文件。
步骤400:在本地计算机上运行Hadoop Streaming,调试MapReduce程序和验证仿真输入文本;
在步骤400中,利用Hadoop实现分布式计算时,需要开发MapReduce应用程序。最简单的MapReudce应用程序至少包含一个map函数、一个reduce函数和一个main函数。map和reduce函数遵循的的常规格式是:
map:(k1,v1)→list(k2,v2)
reduce:(k2,list(v2))→list(k3,v3)
其中,map函数接受一组数据并将其转换为一个键/值对列表,输入域中的每个元素对应一个键/值对;reduce函数接受map函数生成的列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表。
编写map和reduce函数的整个过程中,输入数据是来自底层分布式文件系统HDFS,中间数据是放在本地文件系统,最终输出数据是写入底层分布式文件系统HDFS。
步骤500:在云端制作安装有Hadoop和蒙特卡洛软件的机器镜像,根据计算需要,选定的硬件配置,利用制作的机器镜像实例化一定数量的虚拟服务器;
在步骤500中,云计算(Cloud Computing)是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(UtilityComputing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机技术和网络技术发展融合的产物。它旨在通过网络把多个成本相对较低的计算实体整合成一个具有强大计算能力的完美系统,借助软件即服务(SaaS)、平台即服务(PaaS)及基础设置即服务(IaaS)等先进的商业模式把强大的计算能力分布到终端用户手中。目前,云计算的主要服务形式包括:SaaS(Software as aService,软件即服务)、PaaS(Platform as a Service,平台即服务)和IaaS(Infrastructure as aService,基础设施服务),具体如图4所示,是云计算服务形式示意图。本发明是在云平台的IaaS搭建Hadoop集群,利用Hadoop里的MapReduce框架实现蒙特卡洛仿真的分布式计算。IaaS即把由多台服务器组成的“云端”基础设施,作为计量服务提供给客户。它将内存、I/O设备、存储和计算能力整合成一个虚拟的资源池为整个业界提供所需要的存储资源和虚拟化服务器等服务。IaaS类型的云服务提供商能提供多种配置的主机,用户需要确定的是机器镜像和主机硬件配置。
云服务提供商所提供的机器镜像一般不能满足开发需求,需要进一步配置环境。本发明实施例在云端制作的机器镜像需要安装蒙特卡洛和Hadoop软件,并与本地计算机具有相同的配置环境,这样在本地计算机上调试好的程序可以直接在云端运行。利用制作的机器镜像可以实例化任意数量的虚拟服务器(又称“节点”或“实例instance”),避免了对大量实例化的虚拟服务器逐一配置环境的繁琐。
步骤600:配置云端所有虚拟服务器上的Hadoop运行在全分布模式,形成Hadoop集群;
在步骤600中,配置云端所有虚拟服务器上的Hadoop运行在全分布模式具体包括:分别选择一个节点作为Master和Secondary NameNode,其余节点作为Worker;在本地计算机或云端任一节点上,利用SSH通讯协议,依次依据节点类型更改Hadoop配置文件,并将它们传输至相应的节点上,替换原位置的配置文件;在Master节点上进行Hadoop初始化操作,使Hadoop运行在完全分布模式,形成Hadoop集群。
步骤700:将本地计算机的MapReduce程序和仿真输入文本上传至Master虚拟服务器;
步骤800:在云端Hadoop集群上运行MapReduce,进行蒙特卡洛仿真的分布式计算;
在步骤800中,所述运行云端MapReduce进行蒙特卡洛仿真的分布式计算具体为:运行Hadoop Streaming作业程序,MapReduce自动将map程序和reduce程序运行在不同的Worker节点上,形成Map任务和Reduce任务;在Map任务中,map程序实现蒙特卡洛仿真任务的读取、仿真计算、中间结果输出;在Reduce任务中,reduce程序实现之间结果的读取、结果的合并及输出;通过Hadoop提供的监控页面对集群运行状态进行监控。
步骤900:仿真计算结束后,将云端仿真结果下载至本地计算机。
请参阅图5,是本发明实施例的基于云计算的蒙特卡洛仿真加速系统的结构示意图。本发明实施例的基于云计算的蒙特卡洛仿真加速系统包括模式配置模块、函数编写模块、文本制作模块、函数调试模块、镜像制作模块、集群配置模块、数据传输模块、仿真计算模块和数据下载模块;
模式配置模块用于在本地计算机上安装Hadoop和蒙特卡洛软件,配置Hadoop运行在伪分布模式下;
函数编写模块用于在本地计算机上编写用于蒙特卡洛仿真的MapReduce程序;其中,函数编写模块编写MapReduce程序的方法包括:编写map程序,程序依次包括从标准输入(stdin)读取仿真计算任务、调用蒙特卡洛程序进行仿真计算、将计算结果以键值对(Key-Value-Pair,KVP)的形式写入标准输出(stdout);编写reduce程序,程序依次包括从stdin读取具有相同键(Key)的仿真计算结果、将计算结果进行合并、将合并的结果以KVP的形式写入stdout;编写Hadoop Streaming作业程序,程序包括map和reduce程序的输入输出流(stream)格式、Map和Reduce任务(task)数、输入文本名称、输出路径、mapper和reducer文件名、上传文件路径等。
文本制作模块用于在本地计算机上制作仿真输入文本;其中,文本制作模块制作仿真输入文本的方法包括:如果蒙特卡洛软件的输入是随机数,就生成实际仿真所需随机数;如果输入是程序文件,就生成实际仿真所需程序文件;根据要进行并行计算的规模(线程数),对随机数进行分组或对程序文件进行分解,每组随机数或每个子程序文件对应一个并行仿真;将随机数或程序文件的路径按行写入一个(text)文本,作为输入文件。
函数调试模块用于在本地计算机上运行Hadoop Streaming,调试MapReduce程序和验证仿真输入文本;其中,利用Hadoop实现分布式计算时,需要开发MapReduce应用程序。最简单的MapReudce应用程序至少包含一个map函数、一个reduce函数和一个main函数。map和reduce函数遵循的的常规格式是:
map:(k1,v1)→list(k2,v2)
reduce:(k2,list(v2))→list(k3,v3)
其中,map函数接受一组数据并将其转换为一个键/值对列表,输入域中的每个元素对应一个键/值对;reduce函数接受map函数生成的列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表。
编写map和reduce函数的整个过程中,输入数据是来自底层分布式文件系统HDFS,中间数据是放在本地文件系统,最终输出数据是写入底层分布式文件系统HDFS。
镜像制作模块用于在云端制作安装有Hadoop和蒙特卡洛软件的机器镜像,根据计算需要,选定的硬件配置,利用制作的机器镜像实例化一定数量的虚拟服务器;
集群配置模块用于配置云端所有虚拟服务器上的Hadoop运行在全分布模式,形成Hadoop集群;其中,配置云端所有虚拟服务器上的Hadoop运行在全分布模式具体包括:分别选择一个节点作为Master和Secondary NameNode,其余节点作为Worker;在本地计算机或云端任一节点上,利用SSH通讯协议,依次依据节点类型更改Hadoop配置文件,并将它们传输至相应的节点上,替换原位置的配置文件;在Master节点上进行Hadoop初始化操作,使Hadoop运行在完全分布模式,形成Hadoop集群。
数据传输模块用于将本地计算机的MapReduce程序和仿真输入文本上传至Master虚拟服务器;
仿真计算模块用于在云端Hadoop集群上运行MapReduce,进行蒙特卡洛仿真的分布式计算;其中,所述运行云端MapReduce进行蒙特卡洛仿真的分布式计算具体为:运行Hadoop Streaming作业程序,MapReduce自动将map程序和reduce程序运行在不同的Worker节点上,形成Map任务和Reduce任务;在Map任务中,map程序实现蒙特卡洛仿真任务的读取、仿真计算、中间结果输出;在Reduce任务中,reduce程序实现之间结果的读取、结果的合并及输出;通过Hadoop提供的监控页面对集群运行状态进行监控。
数据下载模块用于在仿真计算结束后,将云端仿真结果下载至本地计算机。
本发明实施例的基于云计算的蒙特卡洛仿真加速方法及系统利用云平台提供的虚拟服务器搭建Hadoop集群,依托MapReduce框架实现分布式计算,用户只需要在自定义的map、reduce函数中实现对Monte Carlo程序的调用、中间结果处理等过程,在Hadoop集群中运行即可实现基于分布式计算框架MapReduce的蒙特卡洛仿真加速。本发明是在云端实现的计算,可以灵活选择虚拟服务器的数量和配置,按时收费的方式保证成本可控,且在每个可接入网络的地方均可使用。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于云计算的蒙特卡洛仿真加速方法,包括以下步骤:
步骤a:在本地计算机上安装Hadoop和蒙特卡洛软件,并配置Hadoop运行在伪分布模式;
步骤b:在本地计算机上编写用于调用蒙特卡洛软件的MapReduce程序,并制作用于蒙特卡洛软件输入的仿真输入文本;
步骤c:在云端制作安装有Hadoop和蒙特卡洛软件的机器镜像,利用制作的机器镜像实例化一定数量的虚拟服务器,并配置云端所有虚拟服务器上的Hadoop运行在全分布模式,形成Hadoop集群;
步骤d:将本地MapReduce程序和仿真输入文本上传至虚拟服务器,并在云端Hadoop集群上运行MapReduce,进行蒙特卡洛仿真的分布式计算。
2.根据权利要求1所述的基于云计算的蒙特卡洛仿真加速方法,其特征在于,在所述步骤b中,所述编写MapReduce程序具体包括:
步骤b1:编写map程序,程序依次包括从标准输入读取仿真计算任务、调用蒙特卡洛软件进行仿真计算、将计算结果以键值对的形式写入标准输出;
步骤b2:编写reduce程序,程序依次包括从标准输入读取具有相同键的仿真计算结果、将计算结果进行合并、将合并的结果以键值对的形式写入标准输出;
步骤b3:编写Hadoop Streaming作业程序,程序包括map和reduce程序的输入输出流格式、Map和Reduce任务数、输入文本名称、输出路径、mapper和reducer文件名及上传文件路径。
3.根据权利要求2所述的基于云计算的蒙特卡洛仿真加速方法,其特征在于,在所述步骤b中,所述制作仿真输入文本具体包括:
步骤b4:如果蒙特卡洛软件的输入是随机数,就生成实际仿真所需随机数;如果输入是程序文件,就生成实际仿真所需程序文件;
步骤b5:根据要进行并行计算的规模,对随机数进行分组或对程序文件进行分解,每组随机数或每个子程序文件对应一个并行仿真;
步骤b6:将随机数或程序文件的路径按行写入一个文本,作为输入文件。
4.根据权利要求2所述的基于云计算的蒙特卡洛仿真加速方法,其特征在于,所述步骤b还包括:在本地计算机上运行Hadoop Streaming,调试MapReduce程序和验证仿真输入文本。
5.根据权利要求4所述的基于云计算的蒙特卡洛仿真加速方法,其特征在于,在所述步骤c中,所述配置云端所有虚拟服务器上的Hadoop运行在全分布模式具体包括:分别选择一个虚拟服务器作为Master和Secondary NameNode,其余虚拟服务器作为Worker;在本地计算机或云端任一虚拟服务器上,利用SSH通讯协议,依次依据虚拟服务器类型更改Hadoop配置文件,并将它们传输至相应的虚拟服务器上,替换原位置的配置文件;在Master虚拟服务器上进行Hadoop初始化操作,使Hadoop运行在全分布模式,形成Hadoop集群。
6.根据权利要求5所述的基于云计算的蒙特卡洛仿真加速方法,其特征在于,在所述步骤d中,所述在云端Hadoop集群上运行MapReduce,进行蒙特卡洛仿真的分布式计算具体为:运行Hadoop Streaming作业程序,MapReduce自动将map程序和reduce程序运行在不同的Worker虚拟服务器上,形成Map任务和Reduce任务;在Map任务中,map程序实现蒙特卡洛仿真任务的读取、仿真计算、中间结果输出;在Reduce任务中,reduce程序实现中间结果的读取、结果的合并及输出;通过Hadoop提供的监控页面对集群运行状态进行监控。
7.根据权利要求1至6任一项所述的基于云计算的蒙特卡洛仿真加速方法,其特征在于,所述步骤d还包括:仿真计算结束后,将云端仿真结果下载至本地计算机。
8.一种基于云计算的蒙特卡洛仿真加速系统,其特征在于,包括模式配置模块、函数编写模块、文本制作模块、镜像制作模块、集群配置模块、数据传输模块和仿真计算模块;
所述模式配置模块用于在本地计算机上安装Hadoop和蒙特卡洛软件,配置Hadoop运行在伪分布模式下;
所述函数编写模块用于在本地计算机上编写用于蒙特卡洛仿真的MapReduce程序;
所述文本制作模块用于在本地计算机上制作仿真输入文本;
所述镜像制作模块用于在云端制作安装有Hadoop和蒙特卡洛软件的机器镜像,并利用制作的机器镜像实例化一定数量的虚拟服务器;
所述集群配置模块用于配置云端所有虚拟服务器上的Hadoop运行在全分布模式,形成Hadoop集群;
所述数据传输模块用于将本地计算机的MapReduce程序和仿真输入文本上传至虚拟服务器;
所述仿真计算模块用于在云端Hadoop集群上运行MapReduce,进行蒙特卡洛仿真的分布式计算。
9.根据权利要求8所述的基于云计算的蒙特卡洛仿真加速系统,其特征在于,还包括函数调试模块,所述函数调试模块用于在本地计算机上运行Hadoop Streaming,调试MapReduce程序和验证仿真输入文本。
10.根据权利要求9所述的基于云计算的蒙特卡洛仿真加速系统 ,其特征在于,还包括数据下载模块,所述数据下载模块用于在仿真计算结束后,将云端仿真结果下载至本地计算机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510885304.5A CN105335215B (zh) | 2015-12-05 | 2015-12-05 | 一种基于云计算的蒙特卡洛仿真加速方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510885304.5A CN105335215B (zh) | 2015-12-05 | 2015-12-05 | 一种基于云计算的蒙特卡洛仿真加速方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105335215A CN105335215A (zh) | 2016-02-17 |
CN105335215B true CN105335215B (zh) | 2019-02-05 |
Family
ID=55285774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510885304.5A Active CN105335215B (zh) | 2015-12-05 | 2015-12-05 | 一种基于云计算的蒙特卡洛仿真加速方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105335215B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740573B (zh) * | 2016-03-02 | 2019-10-11 | 苏州网颢信息科技有限公司 | 一种用于放射线剂量计算的双步蒙特卡洛模拟方法 |
CN107172650B (zh) * | 2016-03-08 | 2022-03-25 | 中兴通讯股份有限公司 | 一种大规模复杂无线通信系统的仿真方法和系统 |
CN105933154A (zh) * | 2016-04-28 | 2016-09-07 | 安徽四创电子股份有限公司 | 一种云计算资源的管理方法 |
CN106951324B (zh) * | 2017-03-10 | 2021-03-02 | 广东恒聚医疗科技有限公司 | 用于快速fluka仿真的并行运算系统及方法 |
US10147103B2 (en) | 2017-03-24 | 2018-12-04 | International Business Machines Corproation | System and method for a scalable recommender system using massively parallel processors |
CN109729121B (zh) * | 2017-10-31 | 2022-05-06 | 阿里巴巴集团控股有限公司 | 一种云存储系统及用于云存储系统中实现自定义数据处理的方法 |
CN110302475B (zh) * | 2018-03-20 | 2021-02-19 | 北京连心医疗科技有限公司 | 一种云蒙特卡罗剂量验证分析方法、设备和存储介质 |
US10928297B2 (en) | 2019-01-09 | 2021-02-23 | University Of Washington | Method for determining detection angle of optical particle sizer |
CN109978171B (zh) * | 2019-02-26 | 2023-10-10 | 南京航空航天大学 | 一种基于云计算的Grover量子仿真算法优化方法 |
CN111724451B (zh) * | 2020-06-09 | 2024-07-16 | 中国科学院苏州生物医学工程技术研究所 | 基于云计算的断层图像重建加速方法、系统、终端以及存储介质 |
CN112001108B (zh) * | 2020-07-08 | 2024-02-02 | 中国人民解放军战略支援部队信息工程大学 | 锥束ct蒙特卡洛仿真集群并行加速方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130238621A1 (en) * | 2012-03-06 | 2013-09-12 | Microsoft Corporation | Entity Augmentation Service from Latent Relational Data |
CN103488775A (zh) * | 2013-09-29 | 2014-01-01 | 中国科学院信息工程研究所 | 一种用于大数据处理的计算系统及计算方法 |
-
2015
- 2015-12-05 CN CN201510885304.5A patent/CN105335215B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130238621A1 (en) * | 2012-03-06 | 2013-09-12 | Microsoft Corporation | Entity Augmentation Service from Latent Relational Data |
CN103488775A (zh) * | 2013-09-29 | 2014-01-01 | 中国科学院信息工程研究所 | 一种用于大数据处理的计算系统及计算方法 |
Non-Patent Citations (1)
Title |
---|
"基于Hadoop云平台的并行数据挖掘方法";杨来等;《系统仿真学报》;20130531;第25卷(第5期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN105335215A (zh) | 2016-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105335215B (zh) | 一种基于云计算的蒙特卡洛仿真加速方法及系统 | |
Fujimoto | Research challenges in parallel and distributed simulation | |
Kale et al. | Parallel science and engineering applications: The Charm++ approach | |
Harman et al. | Cloud engineering is search based software engineering too | |
Cecilia et al. | Simulating a P system based efficient solution to SAT by using GPUs | |
Dreher et al. | A flexible framework for asynchronous in situ and in transit analytics for scientific simulations | |
CN104536937B (zh) | 基于cpu‑gpu异构集群的大数据一体机实现方法 | |
Cabarle et al. | A spiking neural P system simulator based on CUDA | |
CN102708088A (zh) | 面向海量数据高性能计算的cpu/gpu协同处理方法 | |
Li et al. | SGL: towards a bridging model for heterogeneous hierarchical platforms | |
Huang et al. | OpenArray v1. 0: a simple operator library for the decoupling of ocean modeling and parallel computing | |
Wei et al. | LICOM3-CUDA: a GPU version of LASG/IAP climate system ocean model version 3 based on CUDA | |
Chen et al. | Computing for power system operation and planning: Then, now, and the future | |
Schoeberl et al. | T-CREST: A time-predictable multi-core platform for aerospace applications | |
Sahebi et al. | Distributed large-scale graph processing on FPGAs | |
Piñeiro et al. | A unified framework to improve the interoperability between HPC and Big Data languages and programming models | |
Gainaru et al. | Understanding the impact of data staging for coupled scientific workflows | |
Ono et al. | Data centric framework for large-scale high-performance parallel computation | |
Wu et al. | Parallel artificial neural network using CUDA-enabled GPU for extracting hydraulic domain knowledge of large water distribution systems | |
DeRose et al. | Relative debugging for a highly parallel hybrid computer system | |
Liu et al. | BSPCloud: A hybrid distributed-memory and shared-memory programming model | |
Ma et al. | DVM: Towards a datacenter-scale virtual machine | |
Rościszewski et al. | Adaptation of AI-accelerated CFD Simulations to the IPU Platform | |
Szustak et al. | Toward heterogeneous MPI+ MPI programming: comparison of OpenMP and MPI shared memory models | |
Li et al. | Research and application on cloud simulation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |