文摘

计算机辅助建模和仿真是一个在发展中至关重要的一步,随后集成和优化单元操作和化学/制药行业的整个过程。本研究细节两个方法减少计算时间来解决复杂的过程模型,即人口平衡模型,考虑到源术语可以被计算密集型。人口平衡模型也广泛用于描述许多微粒过程的时间演变和分布,及其有效和快速模拟是非常有益的。第一个方法演示了利用MATLAB的并行计算工具箱(PCT)和第二种方法使用了另一个工具箱,夹克,在CPU和GPU加速计算,分别。结果表明显著减少使用多核cpu计算时间相同的精度。许多核心平台如gpu也承诺对计算时间减少更大的问题,尽管低时钟速度和设备内存的限制。这让人们相信使用highfidelity模型(在减少订货模型)微粒过程的控制和优化。

1。介绍

建模与仿真是普遍使用的强大工具设计、分析和控制颗粒的过程。这些微粒过程如结晶、造粒,铣、和聚合的一些主要单元操作进行批量制造商业产品,例如医药、洗涤剂、化肥和聚合物。研究工作集中在这些微粒的建模和仿真过程,特别是那些涉及颗粒材料,一直以稳定的速度增长在过去的几十年里(1- - - - - -3]。这是一个重大成就,考虑到这些系统本质上是动态的行为,是由复杂的微尺度现象(4]。虽然这些过程的潜在机制尚未彻底掌握,造粒,粒子设计的过程,就是这样的一个领域,多年来已经取得了实质性进展(5]。等系统建模的方法很多,因为他们是不同的:离散单元模型(DEM) [6),人口平衡建模(PBM) [3,7- - - - - -13),混合模型结合PBM和民主党(14],PBM体积的流体(受到)方法(15],PBM和计算流体动力学(CFD) [16),等等。前面提到的,使用最广泛的是民主党和PBM方法。人口平衡(PB)模型更适合模拟大量粒子在漫长的时期由于semimechanistic方法(相比更多的机械方法如民主党和受到)它利用描述造粒过程的动力学(17]。因为这些优点,PBM提供了一个非常有效的方式开发一个全面的造粒过程的模型,可以模拟现实的时间框架内进一步用于控制和优化(18),因为它提供了一个方便的数学框架,模型的细节是特定于用户的,取决于内核配方指定的用户(7]。

然而,与所有的基于模型的模拟,PBM技术的效用取决于计算费用带来的运行时间和硬件资源。除了数值的准确性,增加需求的需要,一种加速的需要一直是科学界处理更大、更复杂的问题以及工业社区使用流程模型来研究他们的流程在网上。这是显而易见的,甚至在MATLAB等高级语言环境,计算负载的增加几乎可以用多项式系统的维数增加,导致更长的运行时间。MATLAB是一种科学计算的首选语言的发展由于的算法可以开发和原型,进而由其制成的语义,使强大的可视化功能,和科目的工具箱,都包裹在一个集成框架(19]。而MATLAB擅长“方便可编程性”和“可移植性”方面,它被发现缺乏“性能”部门(20.]。这部分是由于异常高的现代科学应用程序的内存需求,和一定程度上是由于这一事实MATLAB本身消耗相当一部分的系统内存。此外,MATLAB代码造粒等分布式过程通常有几个嵌套循环和多个操作大型数据集执行“连续”或“顺序”默认情况下,大大降低仿真的速度。进一步讨论的观察执行瓶颈PBM代码可以在下一节中找到。尽管研究人员不断升级硬件,包括最新的cpu(中央处理器)和大量的RAM(随机存取存储器)为了提高计算效率,他们中的大多数都不开发代码,充分利用当前的多核的并行处理能力/多处理器的cpu。此外,由于限制,提供的功率密度,可以实现峰值CPU时钟频率限制(6 GHz的英特尔酷睿i5 [21])。

通过并行现有代码,程序员能够规避顺序运行代码的限制在一个核心,除了利用等大规模并行处理器GPU(图形处理器)22]。自2006年以来,MATLAB是标准的工具箱为此称为并行计算工具箱(PCT),虽然对GPU计算,工具箱从“Accelereyes inc .”名叫“夹克”选为显然优于MATLAB的内置功能23]。有一些最近的工作PBM仿真的并行化在此之前的研究。谷纳温等人制定一个高效的并行方式高分辨率有限体积- pb (HRFV)解决上半年分配操作粒子的尺寸范围更计算密集型的处理器等级和操作的一半尺寸范围减少负荷强度更高的排名处理器(24]。他们的策略启用有效载荷分布和导致附近线性加速。最近,Ganesan和Tobiska [25)建立在这项工作通过开发一个有限元的方法把PBE维空间和内部协调,允许并行的问题容易不需要负载平衡。这两篇论文概述了创新技术的并行PBM多个处理单元。本文打算提供一种手段,大大减轻铅模拟的缺陷通过展示如何多核cpu的并行处理能力,以及gpu,可以利用高级语言环境中像MATLAB使用内置功能以及第三方工具箱。这里不会关注发展专业并行代码的最终将应用程序和/或硬件有限,而是为建模和研究团体提供上述工具并行化他们的代码以最小的努力。GPU计算也被应用于混合过程被民主党所工作的Radeke et al。26)从而确认其实用性在降低计算复杂的流程模型。

2。背景

2.1。人口平衡模型

人口平衡模型一直是一维所描述的一个内在属性,如颗粒大小(27]。人口平衡方程的一般形式1)强调的时间变化的分布给出一个或多个固有属性如下(28]: 在哪里 粒子分布和数量吗 是内部的向量坐标,这对研究感兴趣的过程。 代表粒子的净利率形成和损耗等所有离散造粒机制发生聚合、成核和破损。

然而,依赖颗粒大小只有被发现不足造粒的可变性特征行为和此后,其他因素如颗粒孔隙度也发现发挥主导作用的过程(29日,30.]。因此,除了颗粒大小、粘结剂含量和颗粒孔隙度一般选为决定性因素优化和控制过程,证明在当前研究造粒(11),包括模型三维人口平衡框架内发展。Verkoeijen et al。31日)曾描述实现这样一个框架的一种有效的方式表达颗粒大小的内在属性,固体的体积 ,体积的液体 和气体的体积 ——体积的一个向量空间有三个坐标,即 , , 。粒子内部坐标(2)现在表示为 在这三个坐标( )由独特的相位分布卷(固体、液体或气体)的所有粒子体积属于一个预定义的类,,因此可以表示为三个独立的离散域或包含分布的“电网”。这些网格是由“垃圾箱”表示体积类粒子存在于人口。第一本固体体积网格代表粒子的固体含量。这样,个人的固体粒子的量可以表示为分配相应的垃圾箱。同样的原则也适用于其他两个阶段分数网格,液体 和天然气 。从现在起,将使用术语“网格大小”指在网格中箱子的总数。这种方法有两个重要的好处:它使解耦的个人介观过程如聚合、整合和分层;(b)能改善聚合模型的数值解,由于内部坐标的相互排斥的性质(7]。这个三维模型可以描述体积分布的粒子体积的变化对时间(3),如下: 在哪里 代表这样的人口密度函数 摩尔体积与固体颗粒之间吗 之间的液体体积 ,气体体积之间 。偏导数项关于 占罚款到颗粒表面的分层;对这个词 占的干燥颗粒的粘结剂,再湿润;对这个词 占合并,由于颗粒的压实,导致连续减少孔隙体积和孔隙饱和度的增加。在右边, 词由一个破损的内核和一个破碎函数; 占新粒子的成核速率。 不使用在这项研究中,因此没有详细描述。作者想直接读者Poon et al。8)和拉玛钱德朗et al。3为他们的描述)。 (4)- (6)考虑颗粒的形成/损耗由于聚合的条款已定义在文献[32] 在哪里 核和固体体积是多少 尺度依赖的聚合内核,表明聚合的速率常数两种颗粒的内部坐标

2.2。CPU和GPU的并行计算

加速计算,一个问题或“任务”分为多个子任务,同时在多个处理器执行。这种程序执行的方法称为“并行计算”或“并行处理”而不是“串行”或“连续”执行,执行和开发脚本,利用这种风格被称为“并行编程”(33]。在当前一代的多核处理器,有多个独立处理单元叫做“核”执行的一组指令。单个处理器可以包含许多这样的核心,每个核心执行指令集的能力。尽管“核心”指的是物理组件提供并行性,一般来说它也可以意味着一个线程(软件)或一个处理器,甚至一台机器(网络)执行一连串的指令(34]。例如,英特尔酷睿i7 - 2600 k的处理器有四个物理核心,每个都有两个线程(逻辑)核的数量提高到8 (35]。并行编程是背后的基本概念 核心/处理器应该提供的加速峰值 次只有一个核心/处理器。然而,这样的涨幅在仿真时间是最好的理论,因为数据传输所需的时间和同步,核心间,否定的任何好处在加速36]。根据并行计算机的硬件架构和隐式,通信所需的水平,已经建立了几个并行编程模型,在文献中可以找到的说明(37,38]。使用最广泛的方法是任务并行性,数据并行和分布式内存/消息传递模型。每个模型的一个详细的解释是超出了本文的范围,所以简单的定义和提供可能的实现方式(39,40]。(我)任务并行性是通过将每个任务或子任务分配给一个独特的核心或线程(线程模型)和最后分裂或结合数据流。实现:POSIX线程,开放的议员。(2)数据并行性涉及大量数据划分成核心部分,然后每个人在每个核心操作经相同的任务。实现:Fortran 90年和95年。(3)在消息传递中,每个子任务都有自己的本地内存核心和核心通过消息之间交换数据。程序员必须显式地确定并行性的水平。实现:消息传递接口(MPI)。

2.2.1。CPU体系结构和并行编程

计算架构可分为基于弗林的计划(41单指令),单独的数据(SISD);多个指令,单一数据(MISD);单指令多数据(SIMD);或多个指令,多个数据(多指令多数据)系统。当前一代的英特尔处理器核心i7属于多指令多数据类别但利用SISD(单指令、单数据)处理单元在最低水平42]。有三种常见的方法来实现并行执行这些系统:SIMD (SSE)指令操作在多个数据集与一个单一的指令流;同步多线程(SMT),俗称“超”;或者像现在一般首选通过MATLAB等自定义库或“工具箱”的并行计算工具箱(PCT)。PCT允许开发者利用多核处理器,gpu和计算机集群等提供高层结构平行的for循环parfor专门的数组(分布式和codistributed数组),和preparallelized数值算法。这允许程序员关注构建算法,而不是微观管理并行核之间的通信,由MATLAB在幕后的照顾。这些并行编程构造函数一样,独立于底层硬件组件使用,无论是多核通过PCT桌面,或网络上的计算机(计算机集群)与MATLAB的分布式计算服务器通过PCT (mdc)包(43]。

在MATLAB中,每个任务是由MATLAB称为的一个独立实例工人实验室作为一个独立运行的系统过程。沟通,这些工人之间,是由客户端MATLAB的实例。这些实验室核心上执行,但他们的数量不需要对应数量的核设备上。除了一个隐式的低级MATLAB内置多线程,有明确的方法并行性开发人员可用的(44]。的parfor关键字可能是最简单的方法来实现并行性做了少许修改现有代码。只是替换(最好是)最外层与一个parfor在一个for循环导致实质性的加速,有时取决于核心的数量成正比这一问题。迭代的工作分配和收集最终结果是由MATLAB从程序员显式的命令没有任何要求。但这获得很快就失去当实验室的数量超过核的数量,因为线程间通信开销总是高于核(45]。另一个显式的并行化方法代码通过使用SPMD关键字。SPMD(单个项目多个数据)是一个高级构造,可以建立在结合前面提到的任务,数据和消息传递类型的并行性。每个MATLAB职工分配相同的程序,运行在不同的数组或一个非常大的不同部分的数据数组,因此术语“单个项目多个数据。“此外,如果工人之间的数据交换和同步,功能基于消息传递接口(MPI)图书馆(46)像LabSend ()LabReceive ()可以在一起吗SPMD关键字。其他形式的显式并行性包括分布式和codistributed数组,将不被考虑。对于任何描述的结构要实现之前,matlabpool打开命令必须事先发布为了建立连接的客户机会话可用的工人。有关PCT结构及其实现的进一步信息我们将MATLAB的适当部分手册(43]。

2.2.2。GPU的体系结构和并行编程

GPU是SIMD设计范式的一个很好的例子。许多核心的GPU被组织为一个数组,或NVIDIA描述,“流多处理器”(SMs)。每个SM都有一定数量的ALU(算术和逻辑)单位称为流处理器(SPs),共享一个共同的控制逻辑和指令缓存。CPU设计范式拥有优良的性能在连续操作,复杂的控制逻辑的存在和大型缓存内存限制最大速度可实现在吉拍47]。GPU控制逻辑系统,另一方面,不那么笨重,GPU自己捏造相对宽的SIMD向量,增加他们的并行处理能力。由于他们的架构,gpu的专业方式来表述数据并行处理的计算,与MIMD-based平台适合任务并行的酷睿i7,方式来表述数据并行处理,消息传递应用程序。GPU卡本调查中使用的GeForce 280 GTX 240 SPs /运算器,几乎每一个1.3 GHz频率。每个SM都有1024个线程,总数达到30720个线程在一个GPU (48]。

这些大规模并行程序架构,NVIDIA开发统一计算设备架构(CUDA),于2006年被释放,允许高级C语言编程中(49]。CUDA是建立在三个关键抽象层次的线程组,共同的记忆,和屏障同步。CUDA,结合一个应用程序编程接口(API),极大地简化了GPU编程的过程将CPU使用C编写的代码,CUDA FORTRAN OpenCL,或者曲面到GPU原语。有许多可用的自定义库GPU程序员除了MATLAB的内置支持通过PCT像GPUmat GP-you集团和夹克Accelereyes公司。对于这个调查,我们决定使用夹克,因为它广泛收集GPU-ready功能和更好的性能相比其他产品(50,51]。夹克是一个第三方MATLAB工具箱包装CUDA GPU将MATLAB函数转换为函数在基本层面通过将CPU的数据结构转换为GPU类型。这保留了MATLAB的解释编程风格,同时提供实时、透明访问CUDA编译器(52]。所有可用的构造的gfor构造(类似于PCT的parfor)应用提供最简单和最有效的方式为循环运行在GPU并行。它执行的并行循环分配值的循环迭代在GPU核心,随后每个核心上执行的计算在一个通过,导致相当大的加速。它必须记住的CPU和GPU,理想的并行性是实现只有一个任务可以分为一系列互斥的子任务,可以彼此独立地执行在不同的核心。这类问题称为“高度平行”36]。在现实中,大多数问题谎言之间这种极端,极端的“烦人的顺序”。

3所示。模型并行化策略

并行的代码对CPU和GPU的SPMD方法(在前一节中列出)结合数据和任务并行的编程风格。虽然大部分的PBM代码在本质上是“烦人的顺序”,它是计算密集型比聚合内核,这是潜在的并行性的存在。聚合内核,(假设需要一个三维的形式,通过微粒过程如造粒)通常由6嵌套循环,与两组三个循环之间的相互作用 , , 分数两个碰撞的粒子在一个垃圾箱。因为每个MATLAB工人是为了操作彼此独立的通信由客户端实例处理,最好的方法是分解索引空间充分的过程称为循环切片(53]。过程的第一步是确定循环轴(一系列循环索引值)的功能作为并行性的指标,其次是分配这些循环轴可用MATLAB工人,numlabs的数量,(最好是等于核上并行设备)通过labindexNumlabs回报员工的数量在一个给定的开放matlabpool会话,而labindex返回当前执行的工人的指数。循环订单可能是高效的内存访问模式的转换和轴可能进一步切如果设备发现内存不足对于一个给定的循环尺寸。

本研究的目的,基于(3 d人口平衡模型3)开发了如下简化:(我)聚合作为唯一的源项,减少破损和成核条件( );(2)“增长条款”:干燥/再湿润,分层,和整合是被忽略的;(3)实证提出的聚合内核Madec et al。54使用),

产生以下PBE (7)。请见附件一个聚合内核使用的细节和附录D的数值解PBM基于层次双层算法提出的以马内利和柯南道尔三世55]:

这样做是为了强调提高仿真速度通过并行只有形成/损耗PBM脚本的代码块,这往往是最计算密集型的。观察,删除与聚合相关的形成和损耗方面从PBM代码(考虑所有机制)导致时间快20%模拟,证明聚合确实是主要的计算瓶颈。这是由于存在多个“嵌套循环”,突出那些账户的积分方程(5)和(6)按顺序运行在单个CPU核心。换句话说,扩大范围的每个循环指数使单个的迭代运行得更慢。此外,有许多这样的for循环和连续部分的代码执行计算彼此独立的,可以并行。增加垃圾箱/网格的数量在每个维度与尊重 , , ,而提高系统的维数,也大大减缓了代码的执行。这也是所谓的诅咒维度的现象。尽管它是首选使用更高的网格大小的准确表示系统,上述缺点限制程度的灵活性可用于研究和/或工业从业者。因此,有很多潜在的并行加速这些循环所有核心/处理器上同时运行在设备上。

刚刚描述的过程后,内核可以并行执行聚合“切片”最外层的循环: 在哪里

夹克的gfor雇佣了一个算法类似于上面分配部分循环的GPU,所以程序员不必显式地管理沟通,工人之间,。刚刚描述的方法,循环切片,允许更大的控制数据分布在工人,减少对系统资源的需求随着时间的推移,“顺利”的方式(56]。除了方式来表述数据并行处理的方法,另一个更简单分治法方法涉及任务的并行性。实现任务并行性一般通过fork - join模型,描述Refianti et al。57],它依赖于多个线程执行的顺序代码块来实现并行性。这里,采用多道程序设计风格以轻松实现粗粒度(意味着更少,但更大的任务)和连续并行性,但独立部分的代码被映射到不同的线程和任务调度时编译完成,也就是说,静态。这种方法的主要缺点是静态任务分配使得颗粒的性质任务无限的复杂性。任务与无限或变量的大小意味着低效的CPU使用量,因为每个任务运行时间不同的根据问题的大小,因此退出员工在不同的时间(58]。

任务和方式来表述数据并行处理方法遵循相同的算法:MATLAB仿真开始时,只有客户端实例正在积极按顺序处理代码。看到一个SPMD关键字,然后叉函数调用的代码到闲置劳动力以类似的方式。与每个员工积极执行异步串行任务现在开始分配。后所有的工人已经完成了各自的任务,他们返回结果给客户端实例复合类型,然后可以回到常规的CPU类型和随后重新加入。总之,并行的过程遵循本——包括三个步骤:定位部分的代码是最耗费时间与MATLAB分析器等工具;应用上述方法之一的并行性是适当的;最后优化最小变量传输开销。

4所示。结果与讨论

4.1。比较CPU -GPU -和GPU -gfor执行

第一组进行了模拟比较速度运行情况下获得的收益只有聚合PBM代码,根据(7),首先在GPU,然后一个CPU核心。GPU,两个并行版本的代码了:在一个案例中,标准循环在GPU上执行(称为“GPU -“版本)和其他被称为gfor版本,夹克的gfor结构使用。CPU版本unparallelized,与普通循环,按顺序执行在一个MATLAB工人。进行仿真的机器Core2Quad Q6600处理器(2.4 GHz的时钟,4核,没有线程),4 GB的RAM (2 GB×2棒),和一个NVIDIA GeForce 280 GTX GPU (240 CUDA核心,1296 MHz处理器时钟,1 GB内存)。模拟的结果这三个病例首先验证通过比较整体性质块总粒子数与时间,总量与时间、平均直径和时间后最后一次一步验证一致性。其次是策划的时间来模拟每个案例与网格大小,然后加速比与网格的大小。比例计算

从颗粒的曲线描绘时间演化特性(图1),很明显,数值计算的准确性不妥协是在执行CPU或GPU,曲线的每一个情节完全一致。正如所料,粒子的总数(图1(一))以恒定速率降低,因为聚合,其中碰撞(因此,损耗)的两个粒子会导致形成的一个新的联合(8]。总量的分析情节,人物1 (b),可以预见的是恒定值线考虑到总质量/体积守恒系统;即没有粒子过程中从系统中添加或删除。的一个新的、更大的颗粒等于体积之和较小的凝聚粒子形成的。推而广之,这就是为什么平均颗粒直径情节、人物1 (c)颗粒的大小,显示了一个比例增加。计算所有模拟这些大部分属性都是相同的情况下,可以在附件中找到E

仿真时间与网格大小的曲线,图2(一个),显示未婚职工CPU版本的代码比GPU同行快得多,最慢的一组代码与GPU循环,紧随其后的是gfor循环的版本。必须指出的是,GPU是一个独立的设备,不与主机共享其内存(CPU)或提供虚拟内存寻址的一种方式。换句话说,数据不会交流自动主机和设备之间的记忆,而不是显式地调用。这个会导致严重的内存传输开销每次变量复制到和从GPU PCI-E总线(59),这就是为什么GPU版本大大慢于CPU同行。此外,英特尔Core2Quad Q6600的CPU可以达到2.4 GHz处理器时钟速度,GPU核心时钟在显著降低1.3 GHz迫使相同的计算运行在GPU上的时间较长。正如预期的那样,代码gfor跑得更快比由于在GPU上gfor计划和控制回路的固有能力分布。这在图加速很容易分辨2 (c),计算出的比率(11)。尽管初步结果表明cpu比gpu对于这个项目,我们增加的趋势迅速逆转网格的大小(隐式,解决系统)在“十一”之外,作为显示在图2 (b)。稳步增长的比率(10)曲线意味着仿真时间曲线gfor和CPU -收敛和最终将会在一些特定的网格大小,GPU将执行后明显比CPU采用循序渐进的方式。除了网格大小20变得不切实际的广泛的代码运行一段时间,因此没有进行进一步调查。最初的下降的CPU曲线在图2(一个)并在图2 (b)异常显示是可再生的即使启动仿真在不同网格大小的价值观和可能是由于一个初始内存开销在CPU的“热身”开始编码之前执行。除了上述的GPU硬件限制,夹克的执行脚本不透明的程序员,和功能的基准,将任务分配给特定的线程块,和控制内存访问模式是不存在的。未来的工作将涉及建立一个GPU-efficient代码从头开始,这将适合更好的并行与构造gfor

4.2。比较单CPU和SPMD执行

接下来,比较仿真时间顺序PBM代码运行在单个工人,然后在多个工人完成,其次是绘制加速上涨。在执行之前,代码是“流线型”有效地搜索和相关particle-containing垃圾箱在网格上执行计算,不像在前一节中使用的版本循环所有箱子无论粒子是否存在。这种优化是消除不必要的计算,所花费的时间专门对空箱子。GPU的版本不能简化,因为我们的版本的夹克内不允许条件分支gfor循环(52]。并行性达到了环切技术部分中描述3。形成和损耗循环是按照片可用MATLAB工人的池(1、2、4、6、8)分析获得的加速和传输开销的影响。新的简化代码运行在一个英特尔酷睿i7 - 870 CPU(4芯,8线程,2.93 GHz时钟速度)和8 GB的RAM。确定最适当的索引范围循环离散化,切片的不同组合形成和损耗循环模拟的效率测试(参考表1)。虽然是主要的计算瓶颈需要形成环切,最初的测试运行与MATLAB的分析器工具确认执行消耗也是必要的至少一名工人获得的加速超过内存传输开销。因此,某些组合基于网格的大小和数量的工人被废弃,只有相关的被保留。

在这些组合中,收益率最低的仿真时间的网格大小36是每个工人池类比较分析:0,0损耗(1工人);1)形成,1损耗(2工人);3形成,1损耗(4工人);2和6的形成,消逝(8工人)。正如前面做的,颗粒物理性质的情节,人物3(一个)- - - - - -3 (c),检查以确保有效性和精度的数值结果。确认后,模拟时间,并行加速和效率曲线被绘制为五个工人池类选择(数字4(一)- - - - - -4 (c))。

加速因子和并行效率计算中给出威尔金森和艾伦36]:

简单地说,直接加速因子量化多处理器系统的性能获得在一个单处理器。观察图4 (b),8的最大加速实现工人2.2倍,平均每个工人的效率为27.35。并行效率是衡量计算资源的使用,较低的值意味着低利用率和高值意味着更高的平均利用率。虽然加速实现网格大小36的边际,是理论化问题大小的增加将提高不仅加速,而且并行效率。正如预期的那样,网格大小增加到60积极影响加速和并行执行效率见图4 (c)。此外,它也观察到,最有效的方式并行处理6核的分裂形成的5倍和消耗1时间,而不是先前的战略分解形成的4倍,损耗两次。由于消耗更少的计算量比形成,只有成为挑战更高的网格大小,这个发现符合我们的期望,每个工人必须有足够的为并行工作回报。也就是说,对于一个固定的工人,增加问题(网格)的大小将意味着改善加速。这也解释了效率的下降以及从4到6工人(即加速。,形成切4和消耗3次,数据4(一)4 (b))。目前,我们限制自己60由于MATLAB的网格大小限制阵列的最大可能大小(可用系统RAM)成正比,但未来的工作将包括在这些内存限制使用分布式数据类型和使用结构labSendlabReceive为了更好的内存读/写模式。的三个主要因素可能会影响我们的并行算法的效率,负载均衡和数据依赖被排除与每个循环循环均匀分割在工人能够独立执行一个工人。因此,唯一可能的原因可能是开销造成工人之间的沟通。这些费用通常的结果计算成本的缓存一致性;内存冲突固有的共享内存多处理结构像英特尔酷睿i7 [60];和内存之间的冲突操作系统服务(61年]。此外,由于MATLAB看起来工人的操作系统打开一个池,它并不能保证适当的每个工人分配给单个物理核心/线程,这将导致夸大开支从工人试图与实例(或等待)另一个实例在同一线程。

4.3。加快PBM代码集成机制

最后,一个更复杂的集成PBM代码的形式整合方面,聚合和液体干燥/再湿润并行和执行(见附录一个,B,C,分别地。,为kernels used). These mechanisms, in addition to breakage/attrition, are fundamental in describing the granulation process accurately to a greater extent. Although breakage is a crucial element, the focus is still on aggregation as it remains the most computationally intensive and therefore the primary target for parallelization in a full-fledged PBM code. Parallelization was achieved with the fork-join technique, a type of task parallelism. TheSPMD关键字用于连续但独立执行的部分代码可用池的工人之间的裂痕,紧随其后的是计算数据的收集。并行功能是计算干燥/再湿润,合并,最后聚合条件(形成和损耗),每个被分配到每个工人上运行,从而提高并行性。仿真进行了英特尔酷睿2四核Q6600,利用四核。物理性质的演化是策划的SPMD和单一CPU版本的代码(图5),之后所需的时间仿真的并行和顺序执行显示加速(图的绘制6)。

从图可以看出5(一个)随着时间的推移,粒子的总数可以减少由于聚合聚结。粒子的总量,图5 (b)在稳定状态,另一方面由于连续液体粘合剂随着时间和平均颗粒直径的增加也是原因逐渐在图5 (c)。这些曲线趋于平稳的趋势在一段时间后由于网格中的有限数量的垃圾箱,15,这限制了颗粒聚合和增长的程度。这进一步服务,强调需要更快的通过并行模拟为了绕过这些限制并运行代码更长和更多的垃圾箱。数据SPMD和单一CPU版本是在良好的协议,确认数值精度和有效性SPMD版本的结果。网格大小增加和相应的仿真时间绘制。即使对于一个网格的大小仅15岁时,达到了15.5倍的加速,这是重要的考虑,只有四个工人使用。这是一个例子于超线性加速 处理器,加速比 生产(62年]。于超线性加速可能发生如果问题大小每个处理器足够小,适合寄存器,数据缓存,或者其他更小,更快的记忆银行而不是内存(63年]。因为一些并行函数干燥/再湿润和整合利用几个变量,每个处理器并行效率低下的原因(负载不平衡、处理机间通信)抵消导致更快multiplication-addition(疯狂)比单处理器机器上操作,即带宽消耗高于RAM可以交付的速度。

5。结论和未来的工作

并行计算研究了多年,但其应用微粒过程描述人口平衡模型是有限的几个研究结晶(24,25]。并行的过程遵循本——包括三个步骤:定位部分的代码是最耗费时间与MATLAB分析器等工具;应用适当并行的两种方法之一;最后优化最小变量传输开销。我们在这里提出了两种方法的高效并行积分微分的方程包括CPU的聚合词、切片或使用循环,此外,蛮力,fork - join方法结合MATLAB的并行计算工具。这种并行方法为建模和研究社区提供了必要的工具来减少仿真时间以最小的努力。结果显示2.6倍的加速与8个工人在一个连续的代码,与潜在改善加速通过增加问题大小,使用分布式数据类型和使用结构labSendlabReceive为了更好的内存读/写模式。相应的增加内存需求可以由使用分布式算法处理数据类型和mpi的构造labSendlabReceive。第一次描述pbm GPU计算的实用方法。GPU,我们利用MATLAB的夹克工具箱有效地并行化在一个循环在240核NVIDIA GTX 280卡。虽然GPU的性能优势在CPU最初似乎并不鼓励由于较低的时钟频率和板载内存和夹克的限制,进一步分析加速比率显示,GPU的潜力远高于CPU在非常大的网格尺寸给定的重大进步与每个新一代架构。最后,一个相对更复杂的代码整合几个并行的援助机制SPMD关键字,产生一个超线性加速的15.5倍。未来的工作将包括与高效的任务调度建立更好的并行算法更好的加速;在处理器上并行多个网络机使用MATLAB对cpu分布式计算服务器包;特斯拉利用新一代架构的NVIDIA gpu中先进的建筑达到显著加速考虑到一旦并行,pbm非常适合执行大规模并行体系结构。此外,增加计算能力的内存和处理速度,CPU和GPU并行计算结果将显示提高效率增强的内存需求来存储和处理大量的数据网格数量的增加和/或问题的维数。CPU和GPU的并行计算方法开发()也可以轻松地扩展到其他微粒过程所描述的——如结晶、铣、聚合与潜在帮助计算机辅助建模和仿真,并提供经济效益的行业应对这些过程(64年]。

附录

答:聚合内核

我们模拟的目的,我们认为经验提出的聚合内核Madec et al。54]。它考虑了各种参数如颗粒大小和粘结剂体积和可以被认为是一个更合适的经验为我们的多维PBE:内核 在哪里

b .整合

整合,一个负增长的过程代表颗粒由于压实的逃脱的空气孔,已经提出的建模使用实证表达式Verkoeijen et al。31日]。它可以作为 的孔隙度 在这里 最小颗粒的孔隙度和吗 是压缩速率常数。

c .干燥/再湿润

液体粘结剂添加到制粒系统,以促进形成聚集的过程。干燥/再湿润与液体的量的变化在造粒系统由于增加更多的液体或去除由于蒸发。液体率可以从质量平衡 在哪里 在上面的方程中, 喷胶器的速度, 在泥浆固体粘合剂的浓度补充说, 是液体的蒸发率(在这个工作吗 为了简单起见), 是固体的体积的粒子在每个垃圾桶,然后呢 是液体的内容。由于液体之外,每个粒子的液体含量的变化 ,不能由液体体积的网格的值。因此,一小部分是整合,分配的新体积液体粒子中包含两个相邻网格,这样可以将液体体积守恒的。分数可以写成 在哪里 , 液体体积的代表吗 th网格和 液体体积的代表吗 网格。

d数值解

使用多维人口平衡和适当的内核保证改进分析/预测的造粒过程。除了发展模型,结合高效的数值技术等解决integropartial微分方程是另一个艰巨的任务。多个时间尺度和多个维度引入各种复杂解决方案的技术。因此,它是非常重要的和高效的解决方案技术开发健壮的模型对于这样一个框架。我们的方法获取解决方案等方程是基于层次层算法提出的以马内利和柯南道尔三世55]。这涉及到使用有限体积离散化方法对每个单独的固体、液体和气体体积,紧随其后的是集成的人口平衡这些潜在的领域。忽视了分层(3),以离散形式可以表示如图所示 在这里 , 的值是在上端的固体体积吗 本沿着固体体积轴, 的值是在上端的液体体积吗 本沿着液体体积轴,和 的值是在上端的气体体积吗 本沿着气体体积轴。 , , 的大小吗 th, th, 本对固体,液体,气体体积轴。使用这种技术,人口平衡方程简化为常微分方程组的成核率( )、聚合( )和破损( )。聚合的三重积分项从而可以评价铸造成简单的加法和乘法。使用这种方法,硬编码在MATLAB的数值步骤获取人口平衡方程的最终有效的解决方案。包括成核和破损的清晰但不认为在这个研究。

大肠的计算输出属性

大部分属性如平均直径、数量分布的粒子,从仿真结果获得和总量,以定性和定量分析的宏观性质。系统中粒子的总数分布计算 获取系统中粒子的总数乘以阿伏伽德罗常数分布的总数。接下来,系统中粒子的总量和平均颗粒体积用于计算的平均颗粒直径,与球形粒子的假设,

信息披露

作者提到任何直接金融与商业身份。

利益冲突

所有作者状态,他们没有利益冲突。

承认

这项工作是由美国国家科学基金会支持工程研究中心结构有机微粒系统通过授予NSF-ECC 0540855。