Mathematica 的并行计算

在 80 年代,我参加了一个科学演讲,是关于一种相当麻烦的方法来并行化当时存在的一个符号计算系统,我很快意识到我可以更优雅地为 Mathematica 带来并行性,这要归功于它的符号通信协议 MathLink。这个协议让我不仅可以在同时运行的 Mathematica 内核之间交换数据,还可以交换程序。

结果是一个完全用Mathematica编写的包,称为 Parallel Computing Toolkit (https://wolfr.am/10mMRZwRh)。当时,并行计算意味着昂贵的大型机器、FORTRAN 和批处理作业,在交互式的 Mathematica 笔记本上实验不同的并行模式是相当令人满意的,在本地网络上的多台机器进行计算, 能够并行地进行函数编程,并并行地使用符号表达式和任意精度的算法。很多人对此表示很惊讶,他们认为并行化是一件非常复杂的事情,需要超级计算机和大量资金,以及相当大的问题,才值得。事实是,人们解决的大多数问题都很容易并行化。   

与此同时,并行计算机的格局已经稳定并演变为三种架构:多核机器、托管集群和 PC 的自组织网络。Mathematica 在所有这些方面的工作方式都相同,但查找资源和启动流程的方式却大不相同;Mathematica 非常适合与现有环境交互,并且通过一些额外的 Java 代码,现在可以直接在所有三种架构中使用。

为了应对多核机器的广泛可用性,Wolfram Research 决定在 Mathematica 的每个软件中包含我的 Parallel Computing Toolkit 的功能。此时(对于第 7 版)我们还彻底修改了并行命令的设计。

因此,Mathematica 现在知道它运行的计算机的处理器内核数量,并在需要时自动使用它们。

Mathematica 的并行计算的图1

只要您使用其中一个并行命令(例如并行计算表的元素),Mathematica 就会在每个内核上启动一个额外的内核并分配工作。为了让自己相信计算确实发生在这些额外的内核上,我们可以要求一个计算来告诉我们每个元素的计算位置。

Mathematica 的并行计算的图2

每个正在运行的内核都有一个唯一的 ID 值,可以帮助调度更复杂的分布式算法。

本周 (2009/3/18) 发布的 gridMathematica Server (https://wolfr.am/10mM353BQ)  是迈向无障碍并行计算的又一重要步骤。在早期,人们必须收集网络中所有可用机器的主机名,并使用远程登录技术在这些机器上启动 Mathematica。如今,您网络上的 gridMathematica 安装将自我宣传,就像您的打印机、多媒体播放器和其他共享资源一样。

可用的机器将显示在控制面板中,您只需选择要使用的机器即可。在这里,我的小网络由两台双核机器组成,其中一台可用。

Mathematica 的并行计算的图3

现在,我总共有六个内核可用。

Mathematica 的并行计算的图4

Mathematica 也是分析并行计算性能的最佳工具。在这里,我们测量了两个远程内核的基本延迟。延迟只是简单计算的往返时间。

Mathematica 的并行计算的图5

并非所有计算都受益于并行化。例如,内核计算 Sin[1.0] 所花费的时间比将这个命令发送到另一个内核并接收结果所花费的时间要少。

新的并行状态窗口使用动态更新来显示每次并行计算后的基本性能数据。它可以让您一目了然地看到调度对不均匀问题的影响。在第一次运行中,我们将一系列素性测试单独安排到两个可用的内核上。从状态窗口的快照可以看出,这两个内核都执行了相当一部分工作。

Mathematica 的并行计算的图6

现在我们预先在每个内核上安排一半的测试。其中一个不走运,得到了所有困难的情况(素性测试的时间变化很大),因此,另一个内核基本上处于空闲状态——这在并行计算中不是您想要的。

Mathematica 的并行计算的图7

您还可以看到,在执行所有调度和通信的主内核中花费的时间在第一种情况下要高一些;这是您为更精细的调度付出的代价,在这种情况下非常值得(但并非总是如此)。

Mathematica 适用于多核桌面 PC, gridMathematica Server 适用于网络上的所有其他计算机,为并行计算提供了一个易于使用、功能强大的交互式系统。 在第一次考虑 Mathematica 中的并行性将近 20 年后,我的早期开发现在已成为 Mathematica 的标准部分,这是一个越来越全面的系统,可以在任何可用的计算机上进行计算。

购买软件/免费试用【13.1.0中英文 Wolfram 软件】
请点扫码申请
Mathematica 的并行计算的图8

Wolfram光学设计光学设计软件教程Mathematica

Mathematica 的并行计算的评论0条

    暂无评论

    Mathematica 的并行计算的相关案例教程

    为何选择 Mathematica ? 因为设计原理至上 历经超过三十年的基于设计原理的潜心研发,Mathematica 现已成为世界领先的顶级计算平台。 自动化 自动化是实现高效率计算的关键。与其他系统不同,Mathematica 将智能自动化应用于系统的各个方面,从算法选择到绘图布局和用户界面设计。您无需精通算法,便可得到可靠的高质量结果— 即使您是一位专家,也可以更快地得到结果。 Mathem
    1背景介绍 在量子力学中,一个粒子对应一个在时空中演化的波函数,与经典力学中仅仅具有质量、位置、速度等属性的点粒子有很大不同。这种"波粒二象性"常常给初学者带来理解上的困难。我们利用Mathematica软件对一维情形下的几个经典量子力学问题进行了数值模拟,包括高斯波包在自由空间的传播和扩散、遇到刚性边界时的反射、遇到势垒或势阱时的反射和透射,以及在谐振子势场中的准经典振动。Mathematica
    ZOS-API 是一种可以使外部应用程序通过 .NET 接口连接到 OpticStudio 的扩展编程语言。本文介绍了外部应用程序 Mathematica 中独立方法的示例。 作者 Erin Elliott 附件下载 联系工作人员获取附件 简介 ZOS-API 支持两种类型的连接:“独立”,外部应用程序启动自己的 OpticStudio 副本进行交互;“交互式”,已经运行的 OpticStudio
    ZOS-API是一种可以使外部应用程序通过 .NET 接口连接到OpticStudio的扩展编程语言。本文介绍了外部应用程序Mathematica中独立方法的示例。 作者 Erin Elliott 附件下载 文章附件 简介 ZOS-API支持两种类型的连接:“独立”,外部应用程序启动自己的OpticStudio副本进行交互;“交互式”,已经运行的OpticStudio调用外部应用程序。 本文介绍了
    从 Mathematica 链接到其他语言和工具的好处因情况而异。但不同寻常的是,在 Mathematica 9的新 RLink (https://www.wolfram.com/mathematica/new-in-9/built-in-integration-with-r/) 中,它的真正好处在于它与 R 社区的联系。 当我们第一次为 C 添加 MathLink 库时,在进行密集的数值计算方面
    影响力
    粉丝
    内容
    获赞
    收藏
      项目客服
      培训客服
      0 0