问题标签 [matlabpool]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1291 浏览

matlab - 在 MATLAB 中启动 Parpool

我尝试parpoolMATLAB 2015b. 命令如下,

此命令应分配 3 个工人。而我收到一条错误消息,指出启动失败parpool。错误信息如下,

类似的查询发布在 ( https://nl.mathworks.com/matlabcentral/answers/196549-failed-to-start-a-parallel-pool-in-matlab2015a )。我遵循相同的程序,根据建议验证本地配置文件。

使用distcomp.feature( 'LocalUseMpiexec', false);or distcomp.feature( 'LocalUseMpiexec', true)instartup.m并没有带来任何改进。此外,当尝试验证local配置文件时仍然会给出如下错误消息,

我只在我的集群机器中收到这些错误。但是parpool在我的独立 PC 中启动运行良好。有没有办法纠正这个问题?

0 投票
1 回答
306 浏览

multithreading - 无法将核心 i7 中的所有 8 个核心用于 matlab

当我执行

一切正常,但是当我尝试执行时

错误立即发生。我读到了超线程,我知道 8 个内核中有 4 个是虚拟的。这是否意味着我不能以有效的方式使用所有 8 个内核

在 Matlab 中?

例如,我有 8 个类似的独立任务。

我可以在 python 或 C#/C++ 中使用所有 8 个内核,加速速度提高 8 倍吗?

0 投票
1 回答
725 浏览

matlab - 如何将包含类定义的文件夹添加到 matlab parpool 对象

我想使用 Matlabparfor来加快我的代码的某些部分。执行所需的一些函数驻留在包含类定义的目录中。因此,我将必要的目录以及所需的文件添加到池对象中,如下所示:

我通过检查poolobj该字段中是否包含必要文件来确认AttachedFiles。但是,当我运行时parfor,Matlab 会抛出一个错误:


编辑:

根据下面的答案,我尝试添加整个目录,但没有奏效:

0 投票
0 回答
223 浏览

matlab - 高大阵列上的 MATLAB“聚集”永不终止

我在 Windows 10 上运行 R2017a,并使用从 Datastore 对象构造的 tall 数组(即,它本身是由基于双精度的 MATLAB 矩阵构建的 tall 数组构造的)。

我现在遇到的问题真正困扰我的是我所有的代码过去都可以正常工作。有一天,当我尝试运行它时,它就开始挂起。

这是有问题的块:

我的 tall 数组是一个 M x ~1700 单个数组,构建在这个较小的单个数组的数据存储上。在一个循环中:

接着:

正如你所看到的,这就像它得到的一样香草。但是操作 'sz = gather(sz)' 只是永远挂起。它永远不会完成或返回。我的并行池已正确启动,并且收集操作达到打印“评估 100% 完成”的程度。但它无处可去。如果我暂停执行,我总是会被带到 RemoteSpdmExecutor 中的某个点,第 129 行“obj.RemoteSpmdController.drainIO(false);”。这条线显然永远持续下去。

编辑:当我今天醒来时,它开始失败并显示一条错误消息:'Error using parallel.FevalOnAllFuture/fetchOutputs(第 69 行)fetchOutputs 无法连接 OutputArguments。将“统一输出”设置为 false。来自非单元格数组对象的单元格内容引用。

编辑:重新创建了我的默认本地并行池几次。现在又回到了同一行代码上。

根据我的所有测试,似乎每当我从多个tall-array 文件夹构造一个 tall 数据存储,然后从该数据存储构造一个 tall 数组时,就会出现我的问题。

把我的头发扯掉了。如果有人甚至怀疑在哪里寻找这个问题的根源,我将不胜感激。我会尽量快速响应更多信息的请求。

0 投票
0 回答
194 浏览

matlab - Jacobi算法的并行实现需要太多时间

我为线性系统的分辨率实现了 Jacobi 方法的并行版本。做一些测试我注意到与执行顺序函数的时间相比,并行执行函数的时间非常长。这很奇怪,因为 Jacobi 的方法在并行实现时应该更快。

我认为我在代码中做错了什么:

下面是测试

我用 1、2、3 和 4 个工作人员(我有一个四核处理器)对函数进行计时,parpool结果如下:

工人越少,时间就越好。这就像@Adriaan 所说的那样,可能是由于开销。

这是否意味着,在这种情况下,顺序函数总是比并行函数快?还是有更好的方法来实现并行?

这个问题中,据说迭代次数多时并行性能更好。在我的例子中,通过这个测试,只有 32 次迭代。

Jacobi 方法的顺序实现是这样的:

我用 timeit 函数对代码进行了计时,结果如下(输入与前一个相同):

4名工人:11.693473075964102

3名工人:9.221281335264003

2名工人:9.150417240778545

1名工人:6.047181992020434

顺序:0.002893932969688

0 投票
1 回答
64 浏览

matlab - Matlab 并行运行时看不到特定函数

这让我很难过。

我编写了一个函数parObjectiveFunction,它使用createJob和并行运行多个模拟createTask。它将参数 an 作为参数objectiveFunction传递到代码中,以计算每个模拟的目标函数值。

当我parObjectiveFunctionobjectiveFunction找到的目录运行时,它按预期工作,但是当我上一层时,它再也找不到objectiveFunction. 我得到的具体错误是

(behaviourObjective 是一个对象)

这很奇怪,有几个原因。

objectiveFunction肯定在path,当我尝试时which objectiveFunction,它指向正确的功能。我在其他目录中有更深层次的代码的其他组件,并且发现它们没有问题(它们是对象而不是函数,但这不应该有所作为)。有一行代码parObjectiveFunction运行模拟,当我直接在 matlab 命令窗口中运行它时,它发现objectiveFunction没有问题。我在本地机器和 HPC 服务器上得到了相同的结果。

我的第一个想法是单个任务可能有自己的path不包括objectiveFunction,但这应该会导致其他组件出现问题(它没有)。问题很复杂,因为我不知道如何调试并行代码。

  1. 我究竟做错了什么?产生问题的代码如下。

  2. createJob是否有任何已知问题导致 matlab 在使用、 和?进行并行处理createTask时找不到函数?submitfetchOutputs

  3. 当问题仅在并行操作时,您如何在 matlab 中进行调试?我的打印语句都没有出现。

要使某些东西适用于外部测试需要相当多的黑客攻击,但为了这个问题,并行函数是:

0 投票
2 回答
182 浏览

matlab - 在matlab中将matlabpool转换为parpool

我有一个来自 matlab 2010a 的代码,我想在 matlab 2019a 中运行它,我正在使用并行性。

但是,代码在这个版本的 matlab 中不能运行,因为我必须使用 parpool。所以,我问知道如何转换或如何更改这部分代码以在我的新 matlab 版本中运行的人。

0 投票
1 回答
84 浏览

matlab - 在 Matlab 中并行执行 COM 实例

我正在尝试通过使用 Mathworks 的 ParralelToolbox 来加速我们的测试环境。但是我无法并行启动多个 Matlab 实例(到目前为止,我们按顺序运行测试,每个测试都通过 ActX 服务器启动一个新的 Matlab 实例)。所以当我在下面运行以下代码时

Matlab 实例是按顺序调用的(测试只是一个非常简单的脚本,它总结了几个数字)。

但是,如果我通过命令行启动一个新的 Matlab

有用。我看到这两种方法在启动 Matlab 的处理上有很大的不同,但第一种方法是

0 投票
1 回答
282 浏览

matlab - 具有大量迭代的 MATLAB Parfor 未开始

我正在运行 Matlab 2014a 并尝试使用 parfor 启动脚本。但是它卡在

我之前运行了一个测试脚本,它工作正常。不同之处在于,测试脚本有 4 次 parfor 迭代和 2 个 5x12x3x4 大小的数组,它们填充在 parfor 循环中,而主脚本有 100 次迭代和 2 个 31x12x3x100 大小的数组。任何想法如何让它运行?谢谢!

编辑:这是我的代码的简化版本来说明问题,请注意这个版本,我不包括计算实际工作。包含计算是不可行的,因为它们涉及其他 Matlab 和 Python 脚本。另外,当我说卡住时,我的意思是我没有从disp(output)线路中得到任何输出。