并行计算实践研讨会
这个视频伴随着实践研讨会介绍你与MATLAB并行计算®和仿真软万博1manbetx件®,这样你就可以解决计算和数据密集型问题使用多核处理器,gpu和计算机集群。通过工作常见的场景将MATLAB算法并行化,并且并行运行多个仿真软件模拟,您将了解并行计算与MATLAB和Simulink和学习的最佳实践。万博1manbetx
随着视频,练习和示例提供了加强如何使用并行计算与MATLAB仿真软件。万博1manbetx车间练习和示例的难度会有所不同,从简单的并行使用概念更先进的技术。
突出了
•加快MATLAB应用程序与并行计算
•运行多个并行仿真软件模拟万博1manbetx
•GPU计算
•卸载计算和集群计算
•处理大型数据集
大家好,欢迎来到这个车间与MATLAB和Simulink并行计算。万博1manbetx并行计算是一个重要的话题,因为工程师和研究人员面临的问题越来越大,越来越复杂。此外,随着技术的发展,预期增强更快和更有效的结果。
并行计算在MATLAB仿真软件支持工程师,科学家和研究人员在任何部万博1manbetx门或行业利用计算资源可用,无需在并行计算专家。这里有一些例子真正的性能与MATLAB的顾客使用MATLAB并行计算工具来加速他们的工作。这个研讨会将指导您完成做同样的步骤和技巧,并记住,并行硬件竞争越来越广泛的和可用的。
多核处理器是常态,GPU设备能力的计算变得非常常见。此外,访问集群和云环境一直在增加,提供使用计算资源的能力超出了可以在一个典型的工作站。无论你是打算利用多核处理器,计算集群,或gpu,重要的是要优化你的代码,这样您就可以得到更好的性能改进,当你介绍并行额外计算能力的工具。
让我们介绍一些步骤可以优化你的代码。修改你的代码之前,您需要决定你的努力。也许最重要的工具来支持这个过程性能分析,可以帮助您找到瓶颈,告诉你你万博1manbetx的代码在哪里花的大部分执行时间。改善这些地区给你最大的性能提升你的努力。
一旦你找到的投资领域,您可以使用有效的编程技术预先配置和向量化加速MATLAB代码的执行。MATLAB代码分析器可以建议你用这个除了带来问题和错误代码中你的注意力。最后,你也可以获得速度UPS通过替换部分的MATLAB代码自动生成的MATLAB可执行文件,称为墨西哥人的功能。您可以使用一个单独的产品称为MATLAB编码器。
重要的是要注意,即使没有并行计算工具箱,MATLAB提供隐式多核支持建于多线程。万博1manbetx越来越多的MATLAB函数利用底层核心多线程库支持和其它工具箱使用核心MATLAB函数时利用这些好处。万博1manbetx然而,并不是每一个MATLAB函数能够多线程和任何本地工作站的加速度是有限的。因此,并行计算工具使您能够获得的好处超出这些限制。
换句话说,并行计算工具箱框支持并行资源的直接控制。例如,并行结构像parfor让控制工作流程的哪些部分分发给多个核心。稍后,我们将讨论如何扩展级别的控制,通过使用MATLAB并行计算集群服务器上的资源。
下面的视频显然将演示在MATLAB中使用并行计算获得性能改进,特别是parfor。我们有三个不同的场景,我们运行相同的参数扫描代码在三种不同的计算环境中,单个桌面工作站,一群200芯,一群1000核心。当你看到这个问题,使用1000内核提供了一个非常重要的加速。
也就是说,我们应该提到扔更多的核心问题并不总是按比例给你更快的结果。一般的经验法则,如果您的模型或应用程序是计算密集型的,你有大量的独立的迭代来完成,你可能可以有效地利用大量的核心加快你的整体执行时间。已经讨论了并行计算的动机和有用性,让我们来谈谈如何利用MATLAB。
我们将首先讨论桌面计算机上使用多核,还会学到一些并行计算基础工人的概念和如何parfor像一个工人的概念,以及parfor循环是如何运作的。这以后,我们将讨论使用gpu其次是扩大集群或云环境。我们会给一些建议使用大数据的并行计算。
MathWorks提供了两种并行计算工具。我们提到过几次并行计算工具箱,我们现在将覆盖。之后,我们会讨论MATLAB并行服务器。你们授权使用并行计算与MATLAB工具箱将安装它。我们将使用术语MATLAB端指机器安装了一个工具盒。
工具箱将允许你用多核处理器更高效利用MATLAB计算引擎叫工人。这些工人是由MATLAB会话控制和允许您使用您的硬件的全部潜力加快您的工作流。您可以使用工人交互地或发送工作在后台运行。工人CPU-based并行工作流的基础形式。
当你有工人进程间通信的集合,我们称之为一个平行的池。你可以初始化和管理一个平行池以编程方式使用MATLAB代码,或从这个图标在MATLAB桌面交互环境。并行计算工具箱处理工作参与分割任务和并行计算和分配他们工人池,从而使你的资源进行并行计算。
幕后的工作都是封装在易于使用的语法。有时简单只是改变一个字,你永远不需要离开熟悉的MATLAB桌面环境。一般来说,你不应该更MATLAB运行工人比物理内核的数量提供给您的机器,否则你有可能资源争用。
现在我们已经介绍了支持并行计算通过工人的基本知识,让我们来谈谈我们所能做的。一些MATLAB中的平行结构更容易开始但是提供控制比较少。别人需要更多的并行计算知识,提供更细粒度的控制。我们从最简单的开始使用和工作。大量的MATLAB工具箱都有内置的自动并行支持。万博1manbetx
如果你发现一个函数并行支持,它包含在你的瓶颈,你可以用很少的努力加速您的代码。万博1manbetx以下的例子在不同的应用程序自动并行支持功能。万博1manbetx底部的链接会给你什么工具箱和功能的完整列表自动并行的支持。万博1manbetx同样,大量的并行块设置启用在工具箱仿真软件可以帮助你加快你的工作流和很少的努力。万博1manbetx
例如,模型优化设计有一个最万博1manbetx好的集成和并行计算工具。你只启用一个复选框,使用平行池在优化过程中,它会立即加快工作流灵敏度分析、响应优化和参数估计。再次,您可以使用底部的链接的完整列表自动并行的支持。万博1manbetx
让我们转到下一个水平。如果你的瓶颈不涉及一个函数自动并行的支持,有很多平行结构中可用MATLAB,给你更多的控制以及一些处于瘫痪状态。万博1manbetx并行计算团队MathWorks积极增加更多的结构和改善现有的。如前所述,根据具体问题,并行计算并不总是给你比例提高,然而,有理想的并行计算,计算量问题是多个任务,迭代,或模拟不相互依赖来完成他们的计算。
解决这些问题的真实世界的例子是蒙特卡罗模拟,参数扫描,和设计优化和应对这一挑战的最简单方法是使用平行的for循环。例如,假设你想要运行五个迭代的代码。如果你运行它在一个for循环,他们连续运行,一个接一个。你等待一个完成之前移动到下一个迭代。然而,如果他们都是独立的任务没有依赖关系或个人之间的沟通需要迭代,可以分配这些任务独立的工人和并行计算它们在同一时间。
这个课程的利用率最大化你的机器,让你更快的结果。平行的for循环使用parfor命令实现。同时需要能够利用并行计算工具箱工人并行处理,它仍然会离开它。这意味着您可以与同事共享代码,使用parfor和合作者可能不会获得并行计算工具。
在这种情况下,parfor会像传统的for循环,虽然不同的顺序迭代。在本例中,我们想要一个典型的连续循环和使用我们的多核处理器并行运行它。在这个for循环迭代不依赖于另一个,不需要彼此之间传递信息。我们要做的是改变parfor循环的for循环,这将自动迭代并行运行多个工人。
Parfor会自动分配的任务完成后可用的工人和收集结果。parfor改变时,你可能需要做一些调整您的代码。代码分析器将有助于指导您完成这一过程的通知你需要做出什么改变为了parfor循环运行。
在这个例子中,没有显示警告,不需要额外的代码更改。在第二个例子稍微不同的代码,代码分析器确定有一个问题,把我们的注意力。下面的例子将给你更多的洞察parfor执行时会发生什么。在这个例子中,MATLAB访问三个工人。他们被分配的任务运行,一旦一个工人完成当前的任务,它可以指定额外的工作。
最后,收集到的结果是,在MATLAB可以显示。当MATLAB承认一个名字在parfor循环作为一个变量,该变量是机密的几类右边的表所示。两个变量类型,可以在运行时产生重大影响是片变量和广播变量。切变量是一个变量,它的值可以分成段或片,然后操作分别由不同的工人。
每个迭代循环的工作在不同的数组。使用切变量可以减少所需的客户机和工人之间的沟通。广播变量以外的其他任何变量的循环变量或一块变量不会改变内部循环。在parfor循环的开始,任何广播变量的值被发送到所有员工。这意味着大型广播变量可以成本显著的开销在客户机和工人之间的转移。
因此,优化parfor循环试图使用更切变量和保持小的任何必要的广播变量来减少并行开销。另一个常见的并行构建parfeval,简称平行f eval。这种并行构造类似于parfor循环,因为它利用并行运行多个任务并行的工人。
不同的是它只在功能和操作是异步或非阻塞对MATLAB。与parfor循环,parfeval允许您在MATLAB并行工作时继续执行命令在后台完成。Parfeval创建一个队列的任务,每执行一个函数在一个平行的工人。
队列,队列中的下一个项目总是上执行下一个可用的工人在池中,从而保护执行顺序。排队等候执行任务后,你可以自由使用MATLAB对其他任务,而无需等待排队的任务。当他们完成时,您可以检索使用fetchnext计算的结果。
你也可以添加或删除任务从队列中。Parfeval还分布并行工作的工人比parfor以不同的方式。正如您所看到的,而不是转移组任务并行的工人,parfeval转移一个任务。如果你的任务或迭代运行时间上有较大的差别,parfeval有助于避免闲置劳动力,可以由分组任务。
那就是说,parfor仍将最有可能去解决方案,但是记住parfeval如果需要保存的顺序执行,如果你需要一个并行队列,或者如果你想继续使用MATLAB虽然在后台执行计算。数据队列允许您传递的数据并行工人回MATLAB客户机。这方面的一个有用的应用程序是能够查看你的并行计算的进展。
开始,我们构建数据立方体和创建一个重量酒吧,我们将使用来查看我们的进步。然后我们指定什么行动将工人每次触发数据队列。在本例中,我们想要运行一个函数和更新重量酒吧,将更新重量栏。我们使用每个构造触发结束后每次迭代后更新重量栏函数发送构建在parfor表示。
每次与parfeval后还可以使用。在parfor运行时,工人们通知客户端计算完成后。这触发更新重量栏函数结束时,更新显示并行的工作的进展。
这个工作流的关键组件数据问,每次发送在您提供的函数在每次迭代后运行。在技术上可以使用parfor在仿真软件中,parfor的主要目的是与仿真软件MATLAB万博1manbetx和不推荐使用。相反,使用parsim并行运行多个模拟。
Parsim分配多个模拟多核cpu加速整体仿真时间。它自动创建并行池标识文件的依赖关系,并管理构建构件。它还与一个新的模拟输入对象,这有助于你设置所有模拟输入在一个方便的方法,包括变量、块参数和仿真配置。
至此,我们已经讨论了自动并行支持和常见的编程结构。万博1manbetx并行计算工具箱还提供了先进的并行结构大多数控制你的资源,如配置并行工人相互沟通和过去的数据,将大型矩阵跨多台机器的内存,和处理大型存储库的数据。因为这些话题可能没有广泛的吸引力,如果你想了解更多,您可以检查这个演讲结束时的资源。
产品文档和技术支持也可以帮你解决你的问题。万博1manbetx并行计算工具使您能够使用NVIDIA gpu加速AI,深度学习和其他计算量分析(不用?QDA ?]程序员。MATLAB具有数百个功能支持使用NVIDIA gpu使用和你将能够访问多个万博1manbetx桌面或集群gpu,产生(?QDA ?]代码等等。
在您的工作站使用GPU,你仅仅需要MATLAB和并行计算工具。您还需要确保你有一个支持NVIDIA GPU设备最新的显卡驱动。万博1manbetx最佳实践,以确保你是最新的设备驱动程序。gpu数百,甚至数千的核心——一种非常集中的指令集。
在MATLAB桌面或一个工人就需要利用整个GPU。在深度学习工具箱,函数像火车网络可以使用GPU如果你设置一个标志,一个合适的GPU。此外,数百名在MATLAB和其它工具箱函数重载使用GPU如果你提供一个GPU数组参数,我们不久将覆盖。
底部的链接需要你的文档在GPU上运行MATLAB函数,您还可以在哪里找到GPU支持函数的列表。万博1manbetx并不是所有的问题都是适合GPU。理想的GPU计算问题是大规模并行和/或计算密集型。大规模并行计算意味着可以分解为数百或数千个独立的工作单元。
你会看到最好的性能当所有的核心是忙碌,利用固有的GPU的并行性质。计算密集型意味着计算大大超过所花费的时间的时间花在传输数据与GPU内存。GPU的高速内存总线数据传输在GPU。然而,GPU已经使用慢得多的PCI express总线与CPU通信。
这意味着你的整体计算加速将减少所需的时间设备之间传输数据,根据需要对你的算法MATLAB开发人员编写(?QDA ?]版本的关键MATLAB工具箱函数,提出了为重载函数。GPU版本的函数输入时将运行在GPU内存。在这个例子中,我们首先创建一个矩阵在CPU上。
使用GPU数组,我们发送一个矩阵的GPU的副本。我们然后执行一个fft函数矩阵,和注意,即使没有明确的指令使用GPU, MATLAB将看到矩阵驻留在GPU和我们使用GPU而不是CPU来执行计算。这意味着您可以使用您的GPU的计算速度更快,同时仍然使用这些相同的底层代码。计算完成后,您可以收集结果和正常在MATLAB中查看它们。您可以进一步加速代码使用先进的GPU [?QDA ?)和墨西哥人编程。
你可以通过咨询了解更多产品文档和技术支持。万博1manbetx现在我们已经建立了并行计算在MATLAB的基本理解,让我们讨论我们如何开始迁移工作流的集群或云更多的计算能力。毕竟,你的问题或挑战工作可能需要额外的计算资源或内存超出一个多核桌面机器上是可用的。
MATLAB并行服务器使您能够扩大你的桌面工作流访问额外的计算能力和内存的多台计算机在一个集群中,是否在您的组织的前提,或者在云上。而建立基础设施可能需要支持从你的员工,你可以发送工作到一个集群没有离开MATLAB桌面环境。万博1manbetx和其他在同一精神并行计算工具MATLAB,桌面机器上开发的代码可以在集群上运行,而无需重新编码你的基本算法。您可以使用一个集群为额外的计算能力或简单地释放你的桌面电脑的其他工作,我们很快就会讨论与一批工作流。
集群规模,你需要MATLAB和并行计算工具箱盒MATLAB客户机工作站,连同其他的许可证代码所需的工具盒。在集群方面,你只需要MATLAB并行服务器。查看工具箱许可证,相反的,每个MATLAB动态并行服务器工作许可证工具箱和块集匹配的许可证提交客户。
您可以选择在哪里运行您的代码通过定义它以编程方式在您的代码中或通过MATLAB UI使用集群配置文件。默认情况下,你会有当地的形象,将MATLAB客户机上运行工人。您可以创建或导入其他配置文件,点你的工人在远程硬件。
可以有多个概要文件访问不同的集群环境中,你可以提交工作不同的配置文件相同的MATLAB会话。你甚至可以有一个交互式并行集群上池,用于调试和原型。注意,MATLAB客户端只能与一个平行的池。
并行计算在MATLAB支持跨平台的提交,这意味着你的MAT万博1manbetxLAB的操作系统客户端从集群可以运行不同的操作系统。由于MATLAB语法在所有平台上都是一样的,没有必要重写你的算法。当然,你需要确保你的代码不会使用硬编码的操作系统特定的文件引用并行计算工具箱包括功能,如额外的路径和附加文件,帮助解决潜在问题与员工共享代码和数据在一个集群。
根据您的系统和网络配置,您可以使用工人集群交互与par池,为原型设计和调试非常有用。对于长时间运行的工作,你想要过渡到批处理工作流,我们前面提到的通过。您可以发送您的代码使用批处理命令运行在远程硬件,MATLAB并行服务器已经安装和配置。
使用批处理工作负载从你的电脑,这样你的机器不再与计算。这意味着你可以做别的事情,把你的机器睡觉,甚至把它关掉。默认情况下,该命令将为串行计算请求一个工人,但是你可以包括池参数为并行计算请求多个工人。
您可以提交多个批处理作业调度程序在集群上一边将进度工作资源可用。你可以检查你的工作的状态和进展与这些国家在日记的命令,可以使用编程方式通过MATLAB命令窗口和交互监控的工作。这项工作完成后,您可以检索结果在MATLAB或查看工件产生的集群文件系统的工作。
您还可以利用批处理仿真软件。万博1manbetxBatchsim工作类似于批处理命令卸载你的MATLAB模拟并行服务器在远程硬件,释放你的桌面资源。请注意,如果您已经在您的代码中使用parsim,你可以改变parsim batchsim,指定连接池参数,以批处理运行模拟。检索完成后,仿真结果在你方便的时候在桌面上进行进一步的处理。
更完整的理解平行工具MATLAB,我们可以看到MATLAB如何提供一个高性能的环境处理大数据在桌面上或集群。有MATLAB功能定制的初学者和大数据应用程序的高级用户。你可以使用结构数组数据存储和高访问数据,并不适合在内存中。
你可以使用结构数组数据存储和高访问数据,并不适合在内存中,使用Hadoop分布式文件系统的数据,或者HDFS,基于云存储的访问,并创建存储库的大量图片,表格,和自定义文件。当你需要了解更多的功能,他们都使用相同的直观的MATLAB你已经熟悉语法。您可以使用较小的数据集算法快速原型,然后扩大使用这些相同的代码存储在大数据集和过程在大型集群。
高阵列提供了一种可视化、解析和分析数据,即使由数百万或数十亿行大到适合你的机器的随机存取存储器,或RAM。他们支持的数据存储,存储库的大量文件位于一个机器,云,或集群。许多操作和函数重载与高数组,使用这些语法一样可以使用正常的MATLAB数组在内存中。高阵列环绕其中一个数据存储和治疗的整个数据集作为一个连续的表或数组。
底层数据存储计算可以通过数组一块。这样做是在幕后,作为用户,只需编写看似正常的MATLAB代码。例如,如果我们建立一个高数组包含表格数据来自多个CSV文件,由此产生的高数组是一个高大的表格。尽管这张桌子不适合在内存中,我们可以使用标准表函数总结或点引用访问的列,然后使用max,最小值,+,-,就像我们会定期,内存中的表。
自独立处理部分,您可以使用并行计算工具箱,麻痹这过程几块。自然,你可以扩大高跨多个电脑使用MATLAB并行服务器阵列。分布式阵列是一个并行数据类型使用多台机器的内存来存储变量太大存储在单个机器上。
使用分布式阵列,您可以分发矩阵跨多台机器和超越单个计算机的功能。原型可以分布式阵列工作流在桌面上使用并行计算工具箱,然后扩大到一个集群,它使用MATLAB并行服务器。在同一个精神试图让事情容易和简单,大量的标准MATLAB函数处理分布式阵列正常使用相同的语法阵列,作为重载函数。
,意味着你可以计划和分配一个数组算法以同样的方式作为一个内存算法和MATLAB将正确版本的代码运行基于输入数据类型。这使您能够利用分布式计算,而不需要成为一个专家在消息传递。在这个例子中,我们开发和原型算法使用分布式阵列在本地机器上一个小数据样本。
一旦我们有信心,我们的算法,我们只需要改变我们的集群配置文件在整个数据集上运行相同的算法,扩大集群。使用一个数据存储,我们可以访问多个文件,每个包含一个矩阵的一部分,我们将使用在我们的计算。我们使用分布式数据存储允许数据分布在工人的池的方式允许处理矩阵作为一个单一的实体。
我们可以用一个小矩阵存储在本地测试这一个文件或小的文件集,然后轻松地扩大集群通过修改配置文件来访问和使用数据存储访问整个数据集,从而构成一个更大的矩阵。注意,圈外的代码,代码的其余部分完全一样。当我们结束,我们也会给你留下一些资源的额外信息。希望你一直能看到重复的主题MATLAB方便您使用强大的计算资源和技术,这样你就可以专注于你的算法和研究。
你不需要成为一个并行编程专家开始,你总是可以深入挖掘更先进的技术,如果你想获得更多的性能从你的资源。这些资源包括硬件已提供给您的机器,以及额外的计算能力从gpu集群的机器。和你是否开发串行或并行算法,您可以使用熟悉的MATLAB开发并在本地原型它们语法,然后扩大集群或到云,而无需重写底层代码。
这里有一些关于这个演讲中提到的主题资源。请随时联系我们的任何问题关于这些主题和更多。技术支持或客户经理我万博1manbetx们也会很高兴回答任何问题你可能有帮助。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。