问题标签 [parfor]

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 投票
3 回答
15458 浏览

performance - MATLAB parfor 比 for 慢——出了什么问题?

我正在处理的代码具有如下循环:

对于小 nt (10)。

计时之后,居然比使用常规循环慢了100倍!!!我知道 parfor 可以做并行求和,所以我不确定为什么这不起作用。

我跑

在运行我的代码之前使用开箱即用的配置。

我对matlab比较陌生,刚开始使用并行功能,所以请不要以为我没有做愚蠢的事情。

谢谢!

PS:我在四核上运行代码,所以我希望看到一些改进。

0 投票
2 回答
7093 浏览

matlab - MATLAB parfor 切片问题?

我有一段代码可以在一系列图像中找到哈里斯角。我需要为 92 张图像执行此操作,但速度相当慢。因此,我想并行运行代码。我下面的代码有一个与变量“corners”相关的错误

其中说:

MATLAB 在 parfor 函数中运行循环,方法是将循环迭代分成组,然后将它们发送给并行运行的 MATLAB 工作程序。为了使 MATLAB 以可重复、可靠的方式执行此操作,它必须能够对循环中使用的所有变量进行分类。该代码以与分类不兼容的方式使用指示的变量。建议的操作 修复指示变量的使用。有关变量分类和 parfor 循环迭代的其他限制的更多信息,请参阅 Parallel Computing Toolbox 文档中的“变量分类”。

任何想法如何解决这一问题?

谢谢!

0 投票
2 回答
755 浏览

multithreading - 在 parfor 中执行多个函数

目前我有几个函数,名为function1.m, function2.m, function3.m, ..., function10.m。每个功能都是相互独立的。我想在一次执行中运行所有功能

目前,我的代码是这样的,它一个一个地运行函数。

我想知道有没有办法重写代码parfor而不是for,因为我知道这evalparfor.

0 投票
3 回答
2669 浏览

matlab - 可以通过编程方式打开/关闭 Matlab PARFOR 循环吗?

有一个关于 MATLAB 中 parfor 的简单问题。我想在我的程序中设置一个标志,以在 parfor 和常规 for 循环之间进行切换。基本上,我需要这个功能,以便我的代码的某些部分可以在“调试”模式下更新图形,然后当标志关闭时,使用 parfor 而不进行图形更新以提高速度。

所以,我正在寻找具有此功能的简单东西:

任何帮助将不胜感激!谢谢!

0 投票
2 回答
5601 浏览

matlab - 全局变量和 parfor

parfor循环中,我试图调用一个访问 a 的函数,global但无济于事。

功能

循环:

错误:

我究竟做错了什么?

0 投票
2 回答
2401 浏览

matlab - parfor 不打印

我正在运行一个带有 parfor 循环的小脚本。该脚本以以下行开头:

所以显然我应该马上看到打印输出。当我使用由 启动的两个工人池运行它时matlabpool(2),我看不到任何打印输出。当我关闭工作人员并保持 parfor 循环时,我会看到打印输出,但只有在我按 ctrl-c 时才会看到。当我将其更改parfor为常规时for,我会看到输出。请注意,我从未见过循环运行完成,因为它很长,但打印输出是脚本的第二行,应该立即发生,除非在 matlab 中存在一些我不知道的缓冲区刷新问题。怎么了??

0 投票
1 回答
235 浏览

matlab - 并行化程序

我有几个.m文件的程序组合。程序运行调用其中一个(main)命名tests.m,然后从那里我调用另一个optFun.m计算不同参数的地方。这些参数在一个while循环内计算,当它们的值多次(例如 4500)没有变化时结束。该程序运行良好,但我必须执行 200 次才能获得 200 组不同的值。此外,我可以使用具有>12 个内核的计算机,因此我对.m包含语句的主文件进行了一些更改parfor,以部署 12 个 matlab 工作人员。我的目标是在一轮中获得 12 个不同的解决方案(初始程序的执行)。

我已经运行了 matlab 的 12 名工作人员,但现在程序似乎在达到最佳或正确结果之前就停止了。似乎我的程序的参数解决方案是在达到 while 循环的 4500 次迭代之前输出的。虽然我获得了 12 种不同的解决方案,但似乎 12 名工作人员共享一些变量的值,因此当其他工作人员对解决方案进行了足够改进或其中几个人的总和被认为是正确的解决方案时,他们就会停止。你能帮我理解发生了什么吗?

非常感谢您的问候

0 投票
1 回答
138 浏览

matlab - 控制 Matlab 工作人员或实验室

在 Matlab 的 parfor 循环中,当工作人员完成执行时,他们保持活动状态(0 CPU 使用率),直到其余工作人员完成计算,因为matlabpool close命令在parfor循环之外。我可以单独控制工作人员的执行并在工作人员完成时动态释放工作人员吗?

问候

0 投票
1 回答
312 浏览

multithreading - Matlab - 单核上的多线程

我正在研究由三个函数组成的简单计算程序。

首先 f1() 生成某种数据并将其存储在缓冲区(向量或队列或其他)中。

第二个 f2() 获取该数据并对其进行一些计算并将结果存储在另一个缓冲区中。

第三个函数 f3() 对 f2() 的结果进行可视化(创建绘图、报告等)。

这三个功能需要在单核机器上同时运行。我知道 PARFOR 循环和 matlabpool。但它可以创建最大线程数(工人)= min(8,'机器中的核心数')。是否有任何解决方案可以在单核机器上的 matlab 中创建几个线程?

0 投票
2 回答
820 浏览

matlab - Matlab中的同步

parfor以这种方式并行处理数据:

它工作正常,但我有一个问题。我的函数generate_data会生成唯一数据(即 0、1、2、3、4 ...),但实际上有时我会两次给出相同的值(我给出 0、1、1、2、3、4、4、5、 ...)。简单来说,我的函数如下所示:

我怎样才能解决这个问题 ?