每页:
搜索

带标签的博客文章 混合建模技术系列

批处理扫描中任务并行的附加值

2014年 3月 20日

到目前为止,我们在混合建模系列博客中还没有详细讨论的一件事是,当向我们的计算中增加更多计算资源时,我们可以期待怎样程度的加速。今天,我们考虑一些解释并行计算局限性的理论研究,并将介绍如何使用 COMSOL 软件的批处理扫描 选项。这是一个内置的、易并行计算功能,可在达到极限时提高性能。 Amdahl 定律和 Gustafson-Barsis 定律 我们之前已经提到过的如何通过增加计算单元来提高速度是基于算法的(在这篇文章中我们将使用术语 进程,但添加的计算单元也可以是 线程 )。一个严格的串行算法,像计算Fibonacci 数列的元素,完全不能从增加过程中受益,而并行算法,如向量加法,可以利用与向量中的元素一样多的处理器。实际中的大多数算法都介于这两者之间。 为了分析一个算法可能的最大加速,我们将假设它由一小部分完全并行化的代码和一小部分严格串行化的代码组成。我们调用并行代码 \varphi 的分数,其中,\varphi 是介于(包括) 0 和 1 之间的一个数字。这自动意味着我们的算法有一个等于 (1-\varphi) 的串行代码片段。 考虑 P 个活动进程的计算时间 T(P),从 P=1 开始,我们可以使用表达式 T(1) = T(1) \cdot(\varphi + (1-\varphi))。当运行 P 个进程时,代码的串行部分不受影响,但完全并行化的代码的计算速度将提高P倍。因此,P进程的计算时间为 T(P)=T(1) \cdot (\varphi / P + (1 -\varphi)),加速度为 S(P):=T(1)/T(P)=1/(\varphi/P+(1-\varphi))。 Amdahl 定律 这个表达式是Amdahl 定律的核心。对于不同的值 \varphi 和 P 绘制图 S(P) ,我们现在在下图中看到一些有趣的东西。 为可并行化代码的不同部分增加进程数的加速比。 对于 100% 并行化代码,极限是不存在的。然而,我们发现对于 \varphi<1,渐近极限或理论最大加速比为 S{max}(\varphi):=\lim{P\to \infty} S(P)=1/(1-\varphi)。 对于 95% 并行化的代码,我们发现 S{max}(0.95)=20,即使我们有无限数量的进程,最大加速也是 20 倍。此外,我们有 S{max}(0.9)=10, S{max}(0.75)=4, 和 S{max}(0.5)=2。当减少并行化代码的比例时,理论最大加速比会迅速下降。 但不要现在就放弃回家! Gustafson-Barsis 定律 Amdahl 定律没有考虑到一件事,那就是当我们购买一台速度更快、内存更大的计算机来运行更多进程时,通常不是想更快地计算之前的小模型。相反,我们想要计算新的、更大(更酷)的模型。这就是Gustafson-Barsis 定律的全部内容。它基于这样一个假设,即我们要计算的问题的规模随着可用进程的数量线性增加。 Amdahl 定律假定问题的大小是固定的。当添加新的处理器时,它们处理的是最初由较少数量的进程处理的部分问题。通过添加越来越多的进程,我们并没有充分利用所添加进程的全部能力,因为最终它们能够处理的问题大小达到了下限。然而,假设问题的大小随着添加的进程数量的增加而增加,那么我们就将所有进程利用到假设的水平,并且执行计算的加速是无限的。 描述这种现象的方程是 S(P)=\phi\cdot P-(1-\phi),这为我们提供了一个更为乐观的结果,即所谓的 缩放加速(类似于生产力),如下图所示: 当考虑到工作的规模通常会随着可用进程的数量而增加时,我们的预测就更加乐观了。 通信成本 Gustafson-Barsis 定律意味着,我们拥有的能添加到进程中的资源才能限制我们可以计算的问题的大小。然而,还有其他因素会影响加速。到目前为止,我们在这个系列博客中试图强调的一点是,通信成本较高。但是我们还没有谈到它有多贵,所以让我们看一些例子。 […]

混合计算:共享内存与分布式内存相结合的优势

2014年 3月 6日

在之前的混合计算系列博客中,我的同事 Pär 介绍了如何在共享内存和分布式内存平台上使用 COMSOL Multiphysics 进行并行数值模拟。今天,我将讨论这两种方法的结合:混合计算。

分布式内存计算入门:定义、目的及原理

2014年 2月 20日

在“混合建模”系列的上一篇文章中,我们讨论了有关共享内存计算的基础知识:什么是共享内存、为什么使用共享内存,以及 COMSOL 软件如何在计算中利用共享内存。今天,我们将讨论混合并行计算的另一个组成分支:分布式内存计算。

共享内存计算入门:定义、目的及原理

2014年 2月 6日

几周前,我们发布了“混合建模”系列的第一篇博客文章,介绍了混合并行计算的含义,以及它是如何提高 COMSOL Multiphysics 运算效率的。今天,我们将简要探讨混合并行计算的一个组成部分——共享内存计算。不过在此之前,我们首先会解释“应用程序并行运行”的意义。此外,我们还将讨论何时以及如何在 COMSOL 软件中使用共享内存。

利用混合并行计算技术加速物理场仿真

2014年 1月 23日

二十年前,配备了多达 1000 个处理单元的向量处理器超级计算机在超级计算机 500 强中占据了统治地位。随着时间推移,大规模并行计算集群不仅迅速取代了向量超级计算机成为了榜单中的新霸主,同时还促使了分布式计算的兴起。集群的每个计算节点上最初只有一个专用于高性能计算的单核处理器,很快,人们针对需要共享内存的节点,增加节点上的处理器数量,并以这种具备内存共享能力的并行计算机为基础,开发出了多核处理器,满足了各类计算应用对高效算法的需求。再看今天的超级计算机 500 强排名,我们会发现当中大多数集群均由数量众多的计算节点组成,每个节点又包含多个插槽(socket),每个插槽连接着最多可达八核的多核处理器。并行计算是一种适用于共享内存计算系统的技术,与基于分布式内存的集群采用的并行计算技术全然不同。为了实现高效率的并行计算,我们需要一种两者并用(混合)的机制。


第一页
上一页
1–5 of 5
下一页
最后一页
浏览 COMSOL 博客