没有合适的资源?快使用搜索试试~ 我知道了~
可在www.sciencedirect.com在线获取理论计算机科学电子笔记349(2020)119-134www.elsevier.com/locate/entcs元胞自动机并行编程环境的微服务方法Aurelio Vivas1,2 John Sanabria3系统工程与计算学院哥伦比亚卡利摘要本文提出了一种并行编程环境的体系结构,旨在协助编写并行程序的过程。所提出的架构允许集成的几个工具,如并行编程骨架和并行编译器,等等。一方面,并行编程框架简化了并行算法的设计。另一方面,并行化编译器依赖于编译器能力将顺序程序翻译成能够使用个人计算机(PC)中的多个处理单元(CPU/GPU)的程序。 本工作提出的技术解决方案如下一种面向微服务的方法。 这种方法简化了新的并行编程工具的集成在现有的部署中通过公知的协议和现有的服务。我们展示了如何将上述并行编程工具集成到支持通用元胞自动机的编码和并行化。由于并行化依赖于每个工具的底层功能,本工作的重点不是处理高效的细胞自动机并行化。相反,一种有前途的微服务方法,用于开发可扩展和可伸缩的并行编程环境 给出关键词:并行编程环境,元胞自动机,微服务,容器,Docker,Kubernetes1引言已经独立开发了几个工具来帮助编写并行程序。然而,一些工具不为科学界所知,或者由于使用困难而未被考虑。现有的并行编程环境已经开发了一个特定的目的。因此,我们发现缺乏能够整合各种并行方法的工具1CIBioFi 项 目, 由哥 伦 比 亚科 学 、 技 术和 创 新 基金 - 一 般特 许 权 使 用 费制度( F ondoCTeI-SGR ) 、Gobernaci′ondelValledelCauca和COLCIENCIAS资助,合同号为BPIN 20130001000072电邮地址:Aurelio. correounivalle.edu.co3电子邮件:john. correounivalle.edu.cohttps://doi.org/10.1016/j.entcs.2020.02.0161571-0661/© 2020作者。出版社:Elsevier B.V.这是一篇基于CC BY-NC-ND许可证的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。120A. Vivas,J.Sanabria/理论计算机科学电子笔记349(2020)119它们大多在异构系统(例如操作系统和编程语言)下开发。为了解决集成问题,我们采用了一种通过容器(即操作系统级虚拟化。容器允许部署自包含的计算环境。在这项工作中,部署了三个集装箱。一个部署了并行编程框架工具,第二个部署了并行化编译器,最后一个部署了支持上述工具的在线代码编辑器为了实现这些容器的集成,在每个容器中部署了一个Web服务模块。这个Web服务模块允许我们将每个容器的功能公开为微服务。因此,微服务方法支持在所提出的工具中集成和扩展新功能本文的大纲如下:第2节专门介绍与本文相关的概念,如容器,微服务和蜂窝自动化。第3节描述了与本文所述工作类似的研究。第4节提出了用于开发并行程序的面向服务的体系结构。第5节介绍了如何使用所提出的框架对生命游戏进行建模。第6节介绍了微服务方法的评估。最后,第7节描述了结论和未来的工作。2背景2.1并行编程在过去的十五年中,计算机体系结构已经从单处理器(单核)发展到多核系统,以克服通过增加单个处理单元中的晶体管数量而施加的物理每个处理器的核心数量增加了,计算机时钟频率也降低了,以减少功耗和发热。处理器设计的这种变化意味着旧的顺序程序无法从新的多核系统中获得为了处理这些新架构,并行编程范例作为一种方法出现,该方法要求开发者在他们的程序中识别可以由多个处理单元(CPU、GPU等)并行执行的工作单元。然而,考虑到我们的顺序思维遗产,考虑并行工作单元已经成为一个新的障碍这就是为什么开发了各种不同抽象级别的工具来帮助用户进行并行编程的主要 原 因 。为 此 目 的 开 发 的 工 具 包 括 : 并 行 编 程 语 言 ( 例 如 高 性 能Fortran)、编程语言库(PTreads、CUDA、MPI、OpenMP和OpenACC)、自 动 并 行 器 、 并 行 编 程 环 境 ( 例 如 编 译 器 [2] ) 和 求 解 器 4 ( 例 如OpenFOAM、ParaView)。在本文中所描述的工作集中在并行编程环境。4求解器在解决遵循特定并行模式的问题时隐藏了并行化细节A. Vivas,J.Sanabria/理论计算机科学电子笔记349(2020)1191212.2容器容器被称为轻量级虚拟化方法,它试图解决跨多个平台和环境构建和部署软件的问题它们将应用程序及其依赖项打包到标准的软件单元(容器)中,这些软件单元是可移植的,易于构建和部署,存储要求更低,运行时开销更低[8][18,p。1]。容器可以轻松快速地从桌面环境移动到云,然后再回到物理服务器[9]。容器带来的好处满足了不同领域的需求,例如:云计算,高性能计算,可重复研究,软件开发等。人们使用Docker或Singularity等容器运行时构建单个容器应用程序微服务等应用程序由多个容器组成,通过容器编排技术部署在分布式系统中, 例如: Docker Swarm , Kubernetes 和DockerCompose。特别是,Kubernetes编排包括一组容器的调度和扩展。Kubernetes中调度的基本单元称为Pod。Pod是一个或多个容器的集合,它们共享同一个网络接口[24,p. 3]。通常,开发人员将密切相关的服务放在同一Pod中。2.3微服务架构风格James Lewis和Martin Fowler这样描述微服务:由于维护和扩展单片应用程序的复杂性不断增加,微服务架构越来越受欢迎。它们是在“做一件事,做好一件事”的理念下发展起来的,即,每个微服务都必须专注于一个可以独立交付和更新的业务功能[5]。微服务可以合作以提供更复杂和精细的功能。合作可以在编配或编排方案下建立。管理意味着一个中央服务负责协调其他服务的活动。 中央服务接收来自用户的请求,外部服务。 它通过向它负责的一个或多个服务发出新请求来处理请求。在接收到响应之后,中心服务将响应返回给先前请求它的服务/用户。在该方案中,所有交互都通过中央服务进行。在编排中,没有这样的中央服务,而是每个参与者都自己行动。服务订阅其他人提供的事件,以便协调他们的活动并相互通信。编排方案是同步请求/响应通信和异步消息通信方案的编排的示例[17] [6,p. 203][4]。微服务公开了可以通过网络调用的函数。这些函数称为API。因此开发人员可以通过编程方式构建应用程序,122A. Vivas,J.Sanabria/理论计算机科学电子笔记349(2020)119不同的微服务提供不同调用发生在代码段微服务),所以这是机器对机器的通信。实现微服务最常见的方法是SOAP标准和REST架构风格。实现微服务时要考虑的另一个方面是容器的使用。这很有帮助,因为单个服务可以托管在单个容器中。这些容器封装了微服务本身,包括所有必需的库和数据,这使得微服务能够自包含。2.4元胞自动机“Cellular automata (CA) offer a powerful modeling approach for complex systems 许多元胞自动机应用模型已被发布来研究不同的现象,例如森林火灾的蔓延[14],城市增长[10],雪晶生长[15],道路交通[11]等。系统由许多具有局部相互作用的离散元素组成,这些元素通常被建模为元胞自动机,在系统的离散方程中引入有限离散和离散变量由此产生的方程允许系统根据细胞自动机属性来描述:细胞空间,状态集、局部相互作用、过渡函数和边界条件。细胞空间是一维、二维或三维排列的细胞网格。这是系统的离散表示发生的地方。每个细胞作为一个系统的组成部分,改变其状态应用一个过渡函数,这取决于它的最近的邻居,包括自己。转换函数返回的值取决于每个系统组件可以接受的状态集然后,在将该函数应用于其组成部分之后,确定整个系统的下一个状态。最后,考虑边界条件的原因有两个。一方面,不可能计算无限系统。另一方面,系统本身可能有自然边界[25]。3相关工作几个CA编程环境已经实现了科学和教育的目的。这些环境提供了基本的功能,如建模语言/工具和机制,以建立一个可视化的表示CA在模拟过程中。此外,有些还提供并行处理支持,以完全满足科学或现实世界应用的需求。Talia和Naumov[20]根据一组要求[20,p. 360-361]对现有CA建模环境进行了比较调查,例如支持分布式计算,可扩展性和可再现性等。这些要求定义了一个非常适合的CA环境。我们主要关注那些提供可扩展性和并行处理支持的编程具体而言,它们提到CAM、CAME L、JCASim和ParCeL-6等项目A. Vivas,J.Sanabria/理论计算机科学电子笔记349(2020)119123CAM(Cellular Automata Machine)[12]是一种加速装置,专门为高速细胞自动机处理而开发。CA模型使用Forth编程语言设计。它提供了硬件级别的可扩展性,为设备添加了更多CAME L(Cellular Automata Modeling Environment and Library)是一个由C++类组成的组件。这些抽象(类)帮助用户建立所需的CA模型。可以开发新的组件来满足目标问题需求[20,p. 374-376]。此外,它还支持JCasin也是Java中CA建模的通用系统。通过CAComb Java包支持并行和分布式处理[20,p. 363-364]。除了桌面应用程序外,它还有一个基于Javaapplet的Web应用程序。ParCel-6是一个用C语言实现的计算库,用于多处理器计算机,集群和网格。它可以与C和C++程序连接。该软件还能够为多处理器机器执行源代码的自动并行化[20,p。364]。这些工具显示了有趣的功能,如CAM专用硬件,ParCel-6中的自动代码并行化和分布式/并行处理能力,以及JCasim提出的Web接口。然而,每个新功能都与特定的工具相关联,也就是说,该领域的大部分工作都是为了开发新工具(具有新功能),而不是为了集成现有工具或新在他们的工作这种方法提供了可扩展性,结合现有的工具来处理建模和高性能的模拟CA。不幸的是,目前还没有这种环境的具体实现在这项工作中,我们提出了一种微服务架构风格及其相应的软件原型,重点关注可扩展性需求。4并行编程环境我们开发了一个通用元胞自动机并行编程环境的原型。这个原型展示了微服务架构风格,如图所示。1,支持集装箱化技术(例如,Docker和DockerCompose)。这种方法允许生成的应用程序是可访问的、可移植的、可扩展的、易于开发、部署和维护的。我们采用REST架构风格进行服务通信。所提出的原型提供了一个代码编辑器,可以通过网络投入运行。这个网页代码编辑器的设计灵感来自于Xuamware Trainer7[3]。软件培训师提供代码编辑,5CAM-8本项目的最新版本使用Sun工作站作为主机,该工作站运行STEP控制软件。6插件是一种软件组件,它为计算机程序添加特定功能7一个通用的C和FORTRAN并行编程环境。124A. Vivas,J.Sanabria/理论计算机科学电子笔记349(2020)119分析和并行化与编译器指令(OpenMP和OpenACC)在一个单一的方式。与VMware Trainer不同,我们将这些功能作为微服务提供。每个微服务代表一个独立开发的功能,连接到一个中央服务。特别是,附加的微服务支持CA模型中的并行编程过程。图1.一、元胞自动机并行编程环境微服务体系结构本节描述了我们采用的将给定的并行编程工具转换为支持CA建模的服务的方法。此外,我们提出的原型的架构和实现细节。4.1将并行编程工具转化为服务现在构建并行程序最简单的方法是构建它的顺序版本,然后递增地应用并行性,直到实现所需的并行化版本。然而,并行性应用于顺序程序的难易程度显然取决于它的结构方式,即,代码段、数据结构和函数是如何组织的。为了保证元胞自动机模型的并行化,我们假设元胞自动机模型必须从一个顺序的模板,促进并行化。促进并行性的模板称为并行编程模式。特别是,在CA模型中执行的计算类型在并行编程模式术语中称为模板我们通过并行模板(PT)服务为用户提供模板(C99编程语言中的CA模型)。然后,用户通过代码编辑器(CE)服务完成此模板,并与Pragcc(PC)服务并行。整个应用程序或提出的原型称为Coder。服务详情以及完整应用程序的操作如下所述4.1.1平行模板(PT)[22]是确保CA模型遵循模板的开发工具之一[13,第89-90页]平行模式。PT采用YAML格式的所需细胞自动化模型的属性,并返回具有此类属性的C99源代码A. Vivas,J.Sanabria/理论计算机科学电子笔记349(2020)119125集此代码必须由用户完成,以满足所需CA模型的需求。一些模型只需要完成初始化和系统动力学功能,而其他表现出复杂行为的模型则需要编辑其他模板功能。生成的模板处理函数调用和模拟细节。开发了一个REST模块来将PT作为服务公开。这个模块接收来自代码编辑器服务的请求,如图所示。1 .一、请求的主体包含一个YAML文档所在的JSON对象。该文档是可扩展的,并传递给PT模块。PT模块提取文档中定义的CA属性,并返回C99源代码和并行化Meta数据8。最后,REST模块将生成的代码打包到JSON对象中,并通过网络发送回CE服务。4.1.2代码编辑器(CE)[21]C99代码编辑由用户通过Web界面进行。更改由CE服务维护。在所提出的架构中,图1,CE完成了中央服务的角色,即,该服务负责处理用户请求并根据所请求的功能来编排其它服务(例如,CA模型模板或并行化)。开发的服务必须与CE通信,以便为其提供额外的功能。4.1.3普拉格茨[23]代码并行化功能由Pragcc服务提供。当用户界面需要代码并行化时,CE服务会在请求中向Pragcc服务发送最新版本的C99源代码和并行化元数据。Pragcc REST模块管理请求,从请求体中提取C99源代码和并行化元数据,并将其发送到Pragcc模块。然后,该模块执行由并行化元数据驱动的C99代码并行化。最后,它返回一个用编译器指令注释的C99源代码(例如,OpenMP或OpenACC)。4.1.4译码器在Coder的帮助下生成了一个元胞自动机项目,如图2所示。它提供了一个用户界面来指定所需CA模型的属性(3)。需要一些属性,例如,细胞空间的大小(矩阵行数和行数),将在细胞空间中保存的值的类型(状态类型),系统打算进化的代数(代数)以及系统的各个部分将如何交互(邻居名称)。 此外,该项目需要一个基本模板的描述,名称和选择(2)。创建的项目列在项目经理部分(1)。如图3所示,打开一个项目。代码编辑界面包括:文件查看器(1),下载项目选项(2),顺序代码编辑器(3),并行化8此元数据旨在由并行化服务用于驱动C99源代码并行化。126A. Vivas,J.Sanabria/理论计算机科学电子笔记349(2020)119代码查看器(4)、选项(5)和向用户显示每个选项的结果的控制台(6)。一个典型的元胞自动机项目由三个文件组成:stencil. c、parallel.yml和Make文件。第一个是C99编程语言的细胞自动机模型的基本代码。第二个是并行化元数据所需的并行化元数据的细胞自动机源代码。最后一个文件是在运行C99应用程序时帮助用户创建的文件。图二. Coder:项目创建界面。图三. Coder:代码编辑界面。5用例元胞自动机是一种探索各种复杂行为的工具,这些行为是从组成动力系统的各个部分之间的相互作用中产生的。研究最多的CA模型之一是Conway生命游戏是一个二维CA,由英国数学家约翰·霍顿·康威于1970年设计。它被用来模拟生命,死亡和生存,通过“活”细胞的初始模式的进化。我们可以在系统进化了几代之后达到以下状态之一:灭绝,A. Vivas,J.Sanabria/理论计算机科学电子笔记349(2020)119127其中在细胞空间中没有“活”细胞;稳定性,所有“活”细胞保持相同状态;振荡,“活”细胞进入无限循环[ 7,p. 32]。生命游戏CA是丰富的模式和复杂性出现在一个简单的系统动力学功能。该函数的确定性性质便于测试CA模型的新并行编程和模拟环境,因为给定时间t的初始配置,我们可以提前确定在时间t+ 1生成的模式用于测试目的。当我们讨论并行化应用程序时,这一点很重要,因为每次执行任何代码优化时,并行化过程都必须由结果验证来指导。最后,我们在本节中关注的是通过实验来检查使用Coder生成的CA模型是否正确。5.1在Coder中建立生命博弈CA模型在Coder的项目创建界面的帮助下,生成了一个元胞自动机项目。该接口为实验提供的初始参数如图2所示。随后,在代码编辑界面的帮助下编辑stencil. c模板。该文件为用户提供了构成CA仿真模型的五个函数:初始化,函数,邻域,进化和主。在初始化功能中,用户必须为细胞空间提供初始所考虑的初始配置如图4b所示,在将系统进化100代并进行代码优化(并行化)之后,我们希望每个实验都以图4b的配置开始,并以图4c所示的配置结束。决定生命游戏系统动态的规则集用函数描述。函数实现考虑以下因素:• 死亡,一个• 出生,一个• 生存,一个• 仍然没有生命,如果一个“死”的细胞少于三个, 三个以上的非上述规则被认为是在摩尔邻域下,如图所示。4a,具有周期性边界条件。邻域9或将被认为是蜂窝空间中每个单元的邻域的区域必须在邻域函数中实现。最后给出了该模板的evolve实现和主要[9]在其他文献中 ,邻域模式被称为模板。128A. Vivas,J.Sanabria/理论计算机科学电子笔记349(2020)119(a) 摩尔邻域(b)t= 0(c)t= 100图4。元胞自动机系统设置5.2实验装置该实验考虑了细胞空间的不同大小:2502,5002,7502,10002,12502,15002。上述值用于观察随着单元空间的大小增加,工具所建议的优化的质量对于每个网格大小,模拟100代CA。为了减少离群值的数量(超过平均计算时间的代),每个尺寸的细胞空间的处理时间计算10次。计算100代的总时间以秒为单位。实验中使用的硬件和软件描述如下。• CPU· 型号名称:Intel(R)Xeon(R)CPU E5-2609 v3· 时钟频率:1.90 GHz。· 每核线程数:1· 每个插槽的核心数:6· 插座:2• GPU· 型号名称:Nvidia Quadro K620· 时钟频率:1124 MHz· 多处理器数量:3· CUDA核心:384(每个SM 128)。· 带宽:29 GBps。• 软件· Docker容器中的pgc++编译器。5.3分析和结果生命CA模型的游戏开发和优化的援助所提出的原型。优化是使用OpenMP和OpenACC编译器指令执行的。它们分别用于在多核和多核环境中执行并行。考虑到三种编程方法:顺序、多核和多核,记录了模型的执行时间.测量并分析了每种方法计算不同网格大小的生成次数所需的时间 结果见图5a和图5b。在图5a中,当执行第一组值时,对于网格大小,A. Vivas,J.Sanabria/理论计算机科学电子笔记349(2020)119129500和1500中,不清楚OpenMP或OpenACC方法占主导地位(处理时间更短)。然而,这两个表现比预期的顺序方法更好。关于在500和1500网格大小之间哪种方法表现更好的附加信息可以通过计算加速来获得。加速比显示了任何资源增强后对应用程序性能的影响一般来说,加速的定义如下:(一)S=TfTe其中Tf是主要编程方法的以秒为单位的处理时间Te是在主要方法上执行的增强的处理时间,以秒为单位因此,S= 0意味着新的解使前一个更差;S= 1,意味着没有显著的改进;S> 1,相对于前一个,增强近似有改进在生命游戏实验中考虑的细胞空间的每个网格大小的加速在图5b中描绘。对于5002的网格大小,OpenMP方法的运行速度比顺序方法快约10倍,而OpenACC的运行速度仅为5倍。OpenACC行为可能是由于要处理的数据量相对较小。因此,沉浸的并行性的量并不证明GPU必须执行的活动来执行计算。访问并行处理的应用程序必须承担额外的计算成本,因为多个执行单元同时保持活动。最重要的是,一些支持GPU的计算机必须承担数据传输成本。通过比较OpenMP与OpenACC方法,如图5b(黄色),我们可以获得关于哪个是5002网格大小的最佳替代方案的更多信息。图5b中观察到的值告诉我们,第一个近似比第二个更好,因为加速的值被舍入为零。换句话说,OpenACC方法不是针对这种特定网格大小的OpenMP方法的改进。一 般 来 说 , OpenACC 方 法 的 加 速 , 相 对 于 顺 序 增 加 ( 顺 序 与OpenACC),因为有更多的数据要处理(数据并行)。另一方面,相对于顺序(顺序vs OpenMP)的OpenMP方法似乎保持不变,即,随着要处理的数据量的增加,没有显著的改善6微服务方法测试在线编程环境提出了一个很大的挑战,因为用户不断地与应用程序交互,使用不同的服务来满足并行编程的需求。软件开发包括各种方法,以确保应用程序能够满足不断增长的用户需求,为了这项工作的目的,我们总结了服务质量的概念,它所花费的时间来满足用户的请求。由于服务质量可能会受到互联网连接速度和复杂性130A. Vivas,J.Sanabria/理论计算机科学电子笔记349(2020)119(a) 摩尔邻域(b)t= 0五、元胞自动机系统设置在服务执行的任务中,我们考虑局域网和Pragcc作为本实验中要评估的微服务。信息安全中的漏洞评估和其他衡量服务质量的指标(例如吞吐量和可用性)等方面没有得到考虑。6.1实验装置进行了压力测试,以评估随着用户需求的增加,服务质量的行为。该测试包括总共500个用户的注意力。每个用户都请求Pragcc服务并行化生命游戏源代码,如上一节所示。新用户(请求)到达0。前一个后2秒。不仅要测量服务用户请求的时间,还要测量在稳定状态下和压力测试期间部署的服务对CPU和内存的影响。Pragcc服务使用Kubernetes编排服务进行扩展。考虑了1、2和4个Kubernetes Pod的设置。Pod被安排在裸机环境中的一台机器上。实验中使用的硬件和软件描述如下。• CPU· 型号名称:Intel(R)Core(TM)i7-4790· 时钟频率:3.60GHz· 每核心线程数:2· 每个插槽的核心数:4· 插座:1• 软件· Ubuntu 18.04操作系统。· Docker,用于部署容器的软件。容器反过来打包部署的微服务。· Kubernetes,容器编排软件包括调度,跨服务器集群分配容器以及扩展单个或一组容器。· JMeter是一个负载测试工具,用于测量和分析各种服务的性能。A. Vivas,J.Sanabria/理论计算机科学电子笔记349(2020)119131(a) 请求延迟(b)Kubernetes Pod CPU和内存使用情况图6.元胞自动机系统设置6.2分析和结果向Pragcc服务发送了500个请求。每个请求发送0。前一个后2秒。由于请求之间的时间很短,因此系统上可能会累积一定数量的请求。图6a显示了1、2和4个Kubernetes Pod的这种行为。也就是说,对于满足相同用户需求的Pragcc服务的1、2和4个副本图6a描绘了随着系统中并发请求的数量增加,用户请求的延迟增加。成功的请求将从服务器收到一个200状态码。否则,失败的请求将获得503错误代码。由于服务在代理服务器(Nginx)后面,默认情况下,当用户请求需要超过1分钟才能得到响应时,它会发送503错误代码。蓝线描述了单个Pod(Pragcc服务的一个实例)处理用户需求时的延迟。在用户请求136处的曲线图中的断点描绘了达到每个用户请求1分钟延迟的限制。从这一点开始,后续的请求将严重失败(503错误在用户请求编号210之前描述的波动行为是服务器告诉用户他/她的请求失败(503错误代码)所花费的时间。通过循环负载平衡Kubernetes当然,交互式应用程序要求响应时间低于1分钟。最后,需要4个Pod才能将延迟降低到平均5个。每次请求33秒。其他服务可能需要不同的配置以满足用户需求。根据CPU和内存使用情况衡量应用程序扩展的影响,参见图6b。 在CPU方面,部署单个Kubernetes Pod意味着处理资源使用量增加2%。然后,后续Pod部署的CPU使用率百分比以0的倍数线性增加。百分之二十三内存使用也面临同样的对于压力测试,CPU和内存资源的使用如图7a和图6b所示。请记住,测试包括服务500个用户,每个用户在前一个用户之后0.2秒向系统发出请求。然后,最后一个请求将在第二个100(500 0)发送到应用程序。2)。上述可能是另一个指标,使我们能够确定哪种配置最适合132A. Vivas,J.Sanabria/理论计算机科学电子笔记349(2020)119(a) CPU使用率(b)内存使用率图7.压力测试根据用户在此特定场景下的需求。我们可以确定理想的情况是那些弛豫时间在100秒之前或附近的情况,如图7a中的黄线所示。其他红线和蓝线场景是获得失败请求的场景。从这个结果中可以获得的另一个度量是计算机在所描述的用户需求下可以支持的Pod数量。因为对于4个Pod,计算机的资源利用率接近50%。在压力测试期间,8个Pod预计此外,对于8个pod的应力测试,预计在低于100秒的时间内达到松弛。另一方面,内存使用率在压力测试期间保持不变,参见图7b。与未运行压力测试时的内存使用情况相比,它也没有显示出显著差异图6b。第七章结论为了辅助通用元胞自动机的开发和并行化,集成了并行编程框架工具和并行编译器进行了性能测试,以确保工具正常工作。因为生成代码的性能取决于集成到系统中的工具。需要将工具与更精细的代码分析集成在一起。考虑到基于微服务的方法,我们进行了一个特定的测试来研究系统在压力下的行为。从获得的结果中,我们可以得出两个指标,使我们能够确定这种情况下,特别是什么是Kubernetes Pod的最佳配置。第一个指标是从图6a所示的行为中得出的。该指示器确定4个Pod是所考虑的3个Pod设置中满足用户需求的理想设置。最后一个指示符来自图7a。四是要树立良好的道德风尚。 由于这种设置确保了系统的松弛时间更少或接近到最后一个用户请求到达系统的时间。最后,图6a和图7a是密切相关的,即, 当给定Kubernetes Pods设置的松弛时间大于最后一个用户请求发送到系统的时间时,该设置将显示失败的请求。总之,几次并行化CA的尝试都以桌面应用程序告终A. Vivas,J.Sanabria/理论计算机科学电子笔记349(2020)119133CAM、CAME L、JCASim和ParCeL-6就是这种情况。 这些工具不提供可移植的并行化方法和机制。最重要的是,它们给科学家带来的学习曲线相对较大。此外,它们也不容易改进。我们提出的通用CA并行化的并行编程环境,由于其微服务的方法,开发得到改进上述内容意味着每个优化或代码增强都可以在CA模型上执行,遵循微服务方法。新的微服务可以很容易地集成到原型中。未来的工作可以提供有关原型架构的修改。这是因为应用程序中存在的通信模式给代码编辑器服务增加了更多的复杂性。Mark Richards在[16,p.31]中提出了一种更好的方法来处理这种复杂性,即将所有微服务都连接到网络接口。服务将被视为向接口提供服务的不连贯的实用程序。 这种修改将降低代码编辑器服务的复杂性,但也会破坏所有操作(对其他服务的请求)都必须通过它执行的不必要的依赖,如图1所示。CAM、CAME L、JCASim和ParCeL-6是专用工具。随着更多工具的集成,所提出的原型可以推广到处理不同的问题和不同的引用[1] MarceloOAlaniz,FabricioBuzos,Ve r'onicaGil-Costa,andAMarcelaPri ntista. 电动机是一种用于细胞自动机模型的机械。在第二届创新与技术国际研讨会ISIT,第28-30页[2] 阿斯特拉 产品-阑尾。 https://www.appentra.com/products/。 (于2019年7月31日查阅)。[3] Manuel Arenaz,Sergio Ortega,Ernesto Guerrero,and Fernanda Foertter. OpenWare Trainer:使用openmp和openacc进行并行编程体验学习的交互式工具。在EduHPC-17:高性能计算教育研讨会。,2018年。[4] Bjorn Butzin,Frank Golatowski,和Dirk Timmermann。物联网的微服务方法。在新兴技术和工厂自动化(ETFA),2016年IEEE第21届国际会议上,第1-6页。IEEE,2016.[5] 卡蒙达微服务和BPM白皮书- 卡蒙达bpm。https://camunda.com/learn/whitepapers/microservices-and-bpm/? utm_source=stack&utm_medium=cpc& utm_campaign=newchannel_test_march. (于2018年2月4日查阅)。[6] Nicola Dragoni,Saverio Giallorenzo,Alberto Lluch Lafuente,Manuel Mazzara,Fabrizio Montesi,Ruslan Musta fin,and Larisa Sa fina.微服务:昨天、今天和明天在现在和未来的软件工程中,第195-216页。Springer,2017.[7] 雷诺·富里基于CUDA的并行元胞自动机仿真框架。博士论文,斯泰伦博斯:斯泰伦博斯大学,2015年。[8] HPC内部。hpc - insidehpc的Shifter - docker容器。https://insidehpc.com/2018/04/shifter-docker-containers-hpc/. (于2018年4月16日访问)。[9] 安·玛丽·乔伊linux容器和虚拟机的性能比较。在计算机工程和应用(ICACEA),2015年国际会议的进展,第342346. IEEE,2015年。[10] Uttam Kumar,Chiranjit Mukhopadhyay和TV Ramachandra。元胞自动机校准模型捕捉城市增长。Boletin Geologico y Minero,pages 285[11] Sven Maerivoet和Bart De Moor道路交通的元胞自动机模型。Physics Reports,419(1):1134A. Vivas,J.Sanabria/理论计算机科学电子笔记349(2020)119[12] 诺曼·马戈勒斯CAM-8:基于元胞自动机的计算机体系结构。arXiv预印本comp-gas/9509001,1995。[13] Michael D McCool,Arch D Robison和James Reinders。结构化并行程序设计:高效计算模式。Elsevier,2012.[14] 朴相一和早川智久使用元胞自动机和渗透阈值分析的森林火灾建模。美国控制会议(ACC),2011年,第293IEEE,2011年。[15] 克莱沃德·赖特。雪晶生长的局部元胞模型。Chaos,Solitons Fractals,23(4):1111[16] 马克·理查兹。 软件架构模式。 O’Reilly Media, Incorporated,[17] 克里斯·理查森。构建微服务:进程间通信。https://www.nginx.com/blog/building-microservices-inter-process-communication/. (于2018年4月18日访问)。[18] S Senthil Kumaran。 实用的LXC和LXD。 Apress,Berkeley,CA,2017.[19] 多梅尼科·塔利亚用于高性能仿真的元胞处理工具。Computer,33(9):44-52,2000.[20] Domenico Talia 和 Lev Naumov。涌现计算的并行元胞编程。在用元胞自动机模拟复杂系统,第357Springer,2010.[21] ArguüelesAVivasA和SanabriaJ.Donaurelio/coder:构建在微服务approach.https://github.com/DonAurelio/coder。(于2018年4月30日访问)。[22] ArguüelesAVivasA 和 SanabriaJ.Donaurelio/parallel-templates : C99 并 行 编 程 模 板 。https://github.com/DonAurelio/parallel-templates。(于2018年4月30日访问)。[23] ArguüelesAVivasA和SanabriaJ.Donaurelio/pragcc: 一 个源到源并行编译器计 划 。https://github.com/DonAurelio/pragcc。(于2018年4月30日访问)。[24] 迪帕克·沃拉 使用Docker的Kubernetes微服务Apress,2016.[25] 魏玛2.3边界条件 http://www.jcasim.de/main/node6.html的网站。(2017年10月29日访问)。[26] 斯蒂芬·沃尔夫勒姆元胞自动机的统计力学。Reviews of Modern Physics,55(3):601,1983.
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功