文档

分析负载不平衡Codistributed数组

这个例子展示了如何配置文件时发生的隐式通信使用不均数组。

先决条件:

这个例子展示了如何使用并行分析器的不均数组。最简单的方法是通过创建一个codistributed数组codistributor作为参数,例如兰特(N, codistributor)。均匀分布的矩阵大小N之间的MATLAB®工人。为了得到一个数据分布不平衡,你可以得到一些codistributed数组的列数的函数labindex

本例中的情节产生12-node MATLAB集群。其他的都是显示节点本地集群上运行。

该算法

这个codistributed数组的算法我们选择相对简单。我们生成一个大的矩阵,每个实验室都有一个大约512 - 512的子矩阵,除了第一个实验室。实验室第一只接收矩阵的一列,另一列是分配给最后一个实验室。因此,four-lab集群,实验室1仅保留一个1 -到- 512列,实验室2和3有自己分配的分区,和实验室4有其分配分区+额外的列(实验室遗留1)。最终的结果是一个不平衡负载时零交流element-wise操作(例如)和(如通信延迟和数据并行操作codistributed / mtimes)。我们首先从一个数据并行操作(codistributed / mtimes)。我们然后执行,在一个循环中,√6,和内积操作,所有这一切只作用于单个元素的矩阵。

MATLAB文件代码示例中可以发现:pctdemo_aux_profdistarray

在这个例子中,矩阵的大小取决于不同MATLAB工人的数量(numlabs)。然而,它需要大约相同数量的计算时间(不包括通信)在任何集群上运行这个例子,所以你可以试着用一个更大的集群,而无需等待很长时间。

P > > labBarrier;%同步所有的实验室
P > > mpiprofile复位;P > > mpiprofile;P > > pctdemo_aux_profdistarray ();
1这个实验室有1773行和列的codistributed数组调用mtimes codistributed数组调用高度平行数学函数(即不需要通信)codistributed数组。完成
2这个实验室有1773行和148列codistributed数组调用codistributed mtimes数组调用高度平行数学函数(即不需要通信)codistributed数组。完成
3这个实验室有1773行和148列codistributed数组调用codistributed mtimes数组调用高度平行数学函数(即不需要通信)codistributed数组。完成
4这个实验室有1773行和148列codistributed数组调用codistributed mtimes数组调用高度平行数学函数(即不需要通信)codistributed数组。完成
5这个实验室有1773行和148列codistributed数组调用codistributed mtimes数组调用高度平行数学函数(即不需要通信)codistributed数组。完成
6这个实验室有1773行和148列codistributed数组调用codistributed mtimes数组调用高度平行数学函数(即不需要通信)codistributed数组。完成
7这个实验室有1773行和148列的codistributed数组调用mtimes codistributed数组调用高度平行数学函数(即不需要通信)codistributed数组。完成
8这个实验室有1773行和148列codistributed数组调用codistributed mtimes数组调用高度平行数学函数(即不需要通信)codistributed数组。完成
9这个实验室有1773行和148列的codistributed数组调用mtimes codistributed数组调用高度平行数学函数(即不需要通信)codistributed数组。完成
10本实验室1773行和147列codistributed数组调用codistributed mtimes数组调用高度平行数学函数(即不需要通信)codistributed数组。完成
11这个实验室有1773行和147列codistributed数组调用codistributed mtimes数组调用高度平行数学函数(即不需要通信)codistributed数组。完成
12本实验室1773行和294列codistributed数组调用codistributed mtimes数组调用高度平行数学函数(即不需要通信)codistributed数组。完成
P > > mpiprofile观众;
1发送pmode lab2client MATLAB客户端异步评估。

首先,浏览功能总结报告,确保它是按执行时间点击排序总时间列。然后顶层的链接功能(这应该是pctdemo_aux_profdistarray)看到函数详细报告。

繁忙的线路表函数的详细报告

每个条目都有自己的MATLAB函数忙线表,这是有用的,如果你想同时配置多个程序或例子。

  • 函数详细报告,观察的通信信息MATLAB代码基于逐行执行。

  • 比较分析信息使用忙行表。点击最大与最小TotalTime进行比较。观察忙行表和查看行号花了最多的时间排序的时间字段使用下拉列表。没有for循环在这段代码中并没有在前面可以看到不断增长的复杂性分析并行工作分配的例子。然而,这仍然是一个大的实验室之间的差异计算负载。看一下√罪(D。* D));线。

尽管不需要沟通element-wise操作,性能不是最优的,因为一些实验室比别人做更多的工作。在第二行,(D * * D),总时间是相同的在两个实验室。然而,数据列克发送的数据列显示一个大的区别在发送和接收的数据量。所花费的时间mtimes在所有实验室相似,因为codistributed数组沟通隐式同步所有的实验室。

在第九列(从左边)的忙行表,酒吧里显示了所选字段的百分比(使用那种忙线列表框)。这些酒吧也可以用来直观地比较总时间,发送的数据接收到的数据主要的和比较实验室。

在绘制视图观察Codistributed数组操作

如果你点击相关的函数名和在函数详细报告,你会得到更具体的信息codistributed数组操作。

  • inter-lab通信数据点击情节所有PerLab通信。在第一个图中,您可以看到实验室1传输的数据量,最后实验室(实验室12)转移最少的数据。

  • 回到函数总结报告,点击然后点击pctdemo_aux_profdistarray链接到查看忙行表了。

使用比较,您还可以看到每个实验室之间传递的数据量。这是常数为所有实验室除了第一个和最后一个实验室。当没有明确的沟通,这表明一个分布的问题。在一个典型的codistributed数组mtimes操作,实验室有最少的数据(例如,实验室1)接收所有必需的数据从他们的邻国实验室(例如,实验室2)。

接收到的数据图

在这个每个实验室接收到的数据情节,显著减少传输的数据量的实验室和传输量的增加由第一个实验室。观察接收通信时间曲线图(图中未显示)进一步说明第一个实验室里有不同的东西。也就是说,第一个实验室是花费最长的时间沟通。

正如你所看到的,一个矩阵的不均匀分布导致不必要的通信延迟当使用数据并行codistributed数组操作和工作与任务并行分布不均(通信)操作。此外,实验室(如第一个实验室在这个例子中),接收更多的数据开始用最少的数据前codistributed数组操作。

这个主题有帮助吗?