共享内存计算的内容,原因和如何介绍

2014年2月6日

几周前,我们在混合建模系列中发表了第一篇博客文章,内容涉及混合并行计算以及它如何帮助Comsol Multiphysics模型更快。今天,我们将简要讨论组成混合动力版的构建块,即共享内存计算。在此之前,我们需要考虑“应用程序正在并行运行”的含义。您还将学习何时以及如何与comsol一起使用共享内存。

多核和多线程

对更快计算机的渴望正在增加,但是在某些技术局限性时代(如时钟速度的提高)迫使计算机世界不得不走多核。如今,多计算机是主流。现代多层处理器通常具有多达12个内核,但甚至可以拥有60多个内核(了解核心是什么以及与共享内存计算的关系,请查看有关的图表此页面上的共享内存计算)。

因此,每个应用程序都需要考虑并行性,以利用最近并行硬件的功能。否则,他们只会在计算上核心。作为用户,您通常不会直接受到并行性的影响,但是您应该意识到桌面上的并行功率,可能会更改以提高生产率的软件设置以及在加强所有可用核心时应有的期望。

为了应用,执行一个过程,要能够在多功能机上并行运行,必须将其分为较小的部分,这些较小的部分称为线程。似乎并行的几个线程的执行称为多线程,在过去的15年左右的时间里,这一直是我们台式计算机中的内置功能。多线程不一定需要多个内核,并且可以通过在时间切片模式下快速切换在单核机上执行。这个过度分配允许更好的资源利用,当有多个内核时也可以使用。

现在,很容易理解为什么与单个核心相比,多层处理器是向前迈出的一大步。拥有多个计算单元意味着我们可以同时运行多个线程。因此,每个时间单元可以执行更多工作。结果,并行化现在是加速计算的主要来源。

在下图中,您可以看到如何comsol多物理学可以从八核机中受益。当使用所有八个核心时,计算时间大大减少。作为直接好处,您可以在相同的时间内运行更多模拟 - 提高生产率。对于以下选定的模型,八核机上的生产率增加了6.5倍。

每天模拟,具体取决于核心的数量
每天相对于用于RF加热模型的芯数的模拟数量。所使用的计算服务器配备了2Intel®Xeon®E5-2609和64 GB DDR3 @ 1600 MHz。

RF加热模型用作共享内存计算示例
获得加速的模型。红色到白色的比例表示温度为celcius,绿色箭头显示磁场。该模型具有近140万度的自由度,并用Pardiso Direct求解器解决了52 GB的RAM。请注意,这是一个双向耦合的多物理模型。该模型的较小版本可在模型画廊

什么是共享内存?

当在计算机上执行进程时,操作系统为应用程序提供了一定数量的内存(注意:在comsol Multiphysics中,您可以在底部的工具栏中看到应用程序分配的内存量)。从广义上讲,这种内存是在其母亲过程创建的所有线程之间共享的,并且每个线程都可以访问存储在其中的所有变量。

就像一个类比,人们可以想到会议室正在举行的会议室。对会议重要的所有报告和信息都分布在参与者面前的桌子上。每个参与者都可以在他想要的任何论文上读写或写作。因此,这些信息是共享的,而每个参与者都可以选择自己的作品。

与大多数类比一样,这简化了很多真实的概念,它只给了我们关于共享内存的原理如何工作的预感。在计算机上使用共享内存编程时,还有更多要牢记的。显然,需要使用某些同步机制,例如,当50个人在同一张纸上写作时,可能会出现资源争议。这也是第一个解释,说明为什么上图中的第一个图中的加速速度会逐渐消失并在某个点达到饱和。

内存的共享允许直接访问共享的变量,并且程序不必通信即可将信息从一个线程发送到另一个线程。由于通信可能是一个大瓶颈,因此应在可能的情况下避免使用,因此Comsol软件是一个优势。当然,有共享内存计算的缺点。正如我们在较早的博客文章,我们可以使用的内存量仅限于我们在计算机中可用的内容,并且在编程应用程序时,程序员还必须考虑其他后勤问题。

为什么使用共享内存?

如前所述,并行化是加速的主要资源。因此,程序员需要确定如何在所有参与线程之间共享整体工作。对于可以并行执行而无需任何依赖项的任务,这是直接的。

在数值线性代数中,您通常在矩阵和向量等大型阵列上执行工作。这里最常见的结构是阵列上的长循环。在共享记忆方法中,所有线程都可以访问整个数组,并且可以在许多时尚中分配循环(如果没有循环依赖依赖关系)。comsol多物理利用各种线性代数操作和特定算法的共享内存并行性 - 为您提供一种通用的并行工具。

但是,在某些任务和算法中,很难甚至不可能利用并行计算方法。一个这样的示例是斐波那契系列,f(n)= f(n-1) + f(n-2),这是一个不可行的递归问题,其中每个步骤都取决于上一个。其他无法完全受益于并行计算的算法零件,例如,时间稳定方案和延续(如渐变)研究固定计算顺序的研究。

但是,我们中很少有人使用计算机和数值软件整天计算斐波那契系列的元素,幸运的是,求解一个线性方程系统(这是每个有限元分析软件的很大一部分),这是一个可行的问题,可与很大程度上。因此,即使矩阵方程只是较大任务的一部分,例如时间依赖时间的问题,也或多或少必须从多计算机中求解矩阵的所有问题。由于Comsol Multiphysics主要是在绝大多数模型中计算矩阵向量操作,因此在多层处理器上使用共享内存具有巨大的优势。对于时间步长的方案和延续研究,每次和参数步骤本身都可以并行执行。为了实现这类研究的可伸缩性,经过时间步变或延续研究的潜在物理学应包含足够数量的自由度。

此外,您必须记住,总体加速受算法的非平行分数及其实现的限制。这个众所周知的观察是由Amdahl的定律。通过推断上述模型中的非平行分数,我们发现即使在具有无限核心数量的机器上,加速的增加也不能超过30倍(仍然令人印象深刻!)。每天将导致60多个模拟。

comsol多物理学如何利用多功能

当然,数值模拟在多核算计算机上的最佳性能取决于所有核心都在使用的事实。默认情况下,comsol软件使用系统上的所有可用核心,因此为了从系统中挤出最好的东西,没有什么具体的。

但是,您可能希望在某些情况下测量模型或系统的加速度,或者您希望将某些内核保留在其他应用程序或任务中。在这种情况下,您可以控制启动comsol多物理时要使用的内核数,或者通过编辑喜好设置多核和群集计算。此外,在混合并行计算中,使用分布式内存和共享存储器同时使用特定设置可能是有益的。

尽快回来查看,因为我们将在本系列的下一篇博客文章中介绍此主题。

进一步阅读

  • 正如我在本系列的上一篇博客文章中提到的那样,对于那些想进一步阅读共享记忆计算的细节的人来说,这是劳伦斯·利弗莫尔国家实验室的提示。并行计算简介
  • 跟上由混合建模博客系列为此页面添加书签

评论(0)

发表评论
乐动体育app
加载...
探索comsol乐动体育赛事播报博客