问题标签 [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 投票
1 回答
1224 浏览

matlab - Matlab中的并行池由于错误而关闭?

我正在尝试在 Matlab-r2014b 中使用 12 个并行工作程序和 parfor 执行代码。我可以这样做,因为我使用的机器有 12 个内核。

但是,当我开始运行代码时,10-15 分钟后,Matlab 屏幕左下角的符号 [“忙碌”一词旁边](parfor 正常工作时通常是蓝色或绿色矩形)变为灰色带有黄色三角形。如果我将鼠标移过它,我会收到一条消息“并行池因错误而关闭”。Matlab 命令窗口没有报告任何错误,并且代码继续工作我猜只使用一个工作人员。

知道消息的可能原因吗?

0 投票
1 回答
1180 浏览

matlab - Matlab Parallel Computing Toolbox 是否只为一个内核分配 1 个工作人员?

您好我正在使用matlab并行计算工具箱进行并行计算。我的笔记本电脑是 2 核 4 线程,所以我假设该任务可以连接到 4 个作品?但是,当我输入命令“matlabpool open”时,只连接了 2 个工作人员。谁能告诉我如何指定要连接的确切工人数量,以便我可以将任务分配给工人数量多于核心数量,以提高计算效率?谢谢!

0 投票
1 回答
512 浏览

matlab - 无法启动 matlabpool

我已经运行 MATLAB 大约一年半了。而且我一直试图让matlabpool几乎每三个月准备一次。在我完全放弃之前,我决定寻求帮助。:)

我的问题从matlabpool命令开始。每当我输入matlabpool命令时,我都会得到:

经过一些研究和不眠之夜,我发现必须使用“集群配置文件管理器”解决问题。但我也从来没有机会看到它工作。这是从并行面板单击集群配置文件管理器后得到的结果:

收到此消息后,Cluster Profile Manager会弹出,但实际上除了“等待”标志之外没有显示任何内容。我检查了我的分布式计算许可证,看起来也不错。

命令返回 1。

顺便说一句,我怀疑还有另一条错误消息与我的某种问题有关。我在每个 MATLAB 开始时都会得到这个:

除了所有这些;每当我尝试从环境选项卡打开“并行首选项”时,我都会收到此消息:

我试图找到函数system_dependent.m但它似乎不存在。我得到的其他常见错误点,函数“feature.m”,选项“isdmlworker”是我找不到任何信息的其他谜团。

如果有人能帮助我解决我在启动 MATLAB 分布式计算系统时遇到的问题,我真的很感激。

编辑:我正在使用 Ubuntu 14.04,我的 MATLAB 版本是 R2014a。

0 投票
1 回答
640 浏览

matlab - Matlab:使用parallel_function时出错:内存不足

我在 Windows 7 64 位、Core i7 CPU 和 8 GB RAM 上使用 Matlab R2011b 版本。我正在使用名为 Locality Sensitive Hashing 的 Approximate Nearest Neighbor 算法运行Matlabpool。启动 Matlab 池后,我得到输出

当控件到达 for 循环时,Matlab 抛出 errro

我不知道如何解决这个问题。请帮忙。谢谢

0 投票
2 回答
452 浏览

matlab - “parfor 中的变量无法分类。” Matlab中的错误

我正在尝试使用 parfor 实现一个非常简单的程序,但我遇到了一些错误。我看到了几乎所有可能重复的 SO 问题,但没有一个与我的问题情况相似。我得到的错误是:

错误:parfor 中的变量 log_likelihood_II_with_entropy 无法分类。

我的代码写在下面:

0 投票
1 回答
111 浏览

multithreading - 不要使用所有 MATLAB 池工作程序

我根据我的 CPU 配置设置了一个本地 Matlab (R2015b) 工作人员池(四核、多线程 => 总共 8 个工作人员。)

我有持续 24 小时的模拟,但我希望能够同时使用我的计算机。因此,我将自己限制为每天 4 次模拟(通过批处理发送),以便我可以同时继续工作。

我的问题是:我怎样才能在不吃掉 8 名工人的情况下排队几份工作?另一个相关的问题是,如果我将池的大小减少到 4 个工人,我还能顺利运行 Matlab 吗?

非常感谢您的回答。

0 投票
1 回答
388 浏览

matlab - 为什么 Matlab 的 parpool 中的其他工作人员会闲置?

我正在尝试在 Matlab 中使用 parpool。

我正在使用以下代码来启动池并运行选择的脚本,但过了一会儿我收到一条通知,指出池将关闭。

下面主要检查代码在哪台计算机上运行并适当地分配工作人员的数量。

并行池关闭通知屏幕截图:-

并行池关闭通知截图

我正在尝试让多台计算机及其多个内核进行一组模拟。模拟是逐行完成的,无需依赖之前的行。我可以发布模拟脚本本身,但它有 300 行长,我已经将其中的一些分解成他们自己的脚本,这意味着更多的代码行。

当模拟在 parfor 中完成时,我正在使用的模拟包(FieldII)不喜欢它。因此我使用 pctRunOnAll 命令的原因。我被引导相信它应该由其他应该让它工作的人工作。

是否有其他工人不决定工作并无所事事的原因?我可以在流程中看到只有一名工人正在工作,但我可以看到所有 16 名工人都已初始化。

处理屏幕截图:-进程截图

sim_img 和 sim_imm144 是完全相同的严格。我复制了 sim_img 并将其重命名,因为 Matlab 具有自动保存和自动加载最新版本的功能。因此,如果我在一台计算机上对脚本进行实验性的改进,它会自动保存并加载到另一台计算机上。因此,作为确保我不会失去工作的保险单,我在每台计算机上运行了两个相同的脚本。

sim_img(144) 脚本加载 FieldII。然后我有一个巨大的 for 循环来封装其余的代码。for 循环选择要执行的模拟和保存结果的目录。有一些 if 和 for 语句根据我的要求将初始化数据应用于模拟器。现在一切都设置好了,它通过查看是否已为该行写入结果文件来检查该行数据是否已/正在处理/正在处理。如果没有,它将通过创建文件为该行预先分配一个文件。然后它会进行一些与当前行相关的最后一些初始化,并开始对该行的模拟。线路模拟完成后,将数据写入预先分配的文件,然后返回检查是否需要模拟另一条线路。

据我所知,我的代码结构并不重要,因为我认为我正在将整个脚本的副本加载给每个工作人员,并且每个工作人员都运行整个脚本。允许它并行的事实是,我检查当前行的结果文件是否存在,如果不存在,则它是预先分配的。我目前有两台计算机在当前模拟上并行工作 - 与我试图让 parpool 做的基本相同。

所以我要问的问题是,是否有其他工人闲置的原因?

我试图添加尽可能多的相关信息。

0 投票
0 回答
78 浏览

matlab - 使用 codistributed/subsasgn 时出错(第 131 行)分配的非单一 rhs 维度比非单一下标多

我正在并行运行我的代码,我的本地配置文件有两个核心。此代码是隐马尔可夫模型中的前向算法。我的代码在这里:

and的结果elnsum和只是类型中的一个值。elnproductelndouble

我得到这个错误:

使用 forward_algo>(spmd) 时出错(第 45 行)
在工作人员 1 上检测到
错误 2. forward_algo 中的错误(第 45 行)spmd

看起来我并没有尝试将多个值分配到一个左手位置以导致Assignment has more non-singleton rhs dimensions than non-singleton subscripts错误。有人可以帮忙吗?

谢谢你

0 投票
0 回答
84 浏览

matlab - 在 Matlab 中使用大矩阵进行并行计算

我有一个大矩阵 M(大小如 18000 x 18000)和一个大小为 k 的数组

一个小矩阵 C(如 18000 x 100)

和一个迭代器

我做了几个这样的计算

现在,如果 M 很大,我会遇到内存问题,因为它已复制到每个本地工作人员。但是 M 没有改变。

问题 :

1)如何避免 M 的本地副本?

2) 这种算法的最佳并行结构是什么?

3)我读到了memmapfile。是否可以将其用于此目的?所以可以说,我将 M 保存到文件中

然后我可以将对象传递给每个工人

但是一旦我通过

这和给每个工人一份内存副本不一样吗?那么工人是否会产生矩阵的本地副本?

0 投票
2 回答
903 浏览

matlab - 如何并行多次运行 MATLAB 脚本

我有一个 matlab 脚本(调用它MyProcessing.m),它根据一些随机数进行一些计算。现在我有一个固定的种子来获得相同的随机数序列。我想并行运行该脚本多次,以利用系统上可用的多个内核。我希望每个新的“流程”都以不同的(但暂时固定的)种子开始。Bellow 是现在的处理文件。

脚本中有一个 for 循环,但我不能使用parfor,因为每次迭代都依赖于前一次。

我的处理.m

我可以访问 MATLAB 中的并行计算工具箱,但我想不出我应该做什么。我相信我必须编写另一个脚本来使用不同的随机种子调用处理脚本,但我还希望并行运行不同的进程,以便我可以运行许多实验。

编辑:

我想要类似的东西

for 循环在哪里启动该过程,然后它不等待,但它继续启动下一个。