首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matlab bsxfun不是多线程吗?

matlab bsxfun不是多线程吗?
EN

Stack Overflow用户
提问于 2012-06-06 13:04:15
回答 1查看 948关注 0票数 1

我使用的是Matlab R2011a,根据文档,自R2009a (http://www.mathworks.com/help/techdoc/rn/br5k34y-1.html)以来,bsxfun函数是多线程的。但是,当我使用bsxfun将矩阵与如下的上、下界进行比较时:

代码语言:javascript
复制
szS=10000;
szT=50000;
matT=rand(szT,3);
matS=rand(szS,3);
matSub=rand(szS,3);
matSlb=rand(szS,3);
for k=1:szS
   matchID = all([bsxfun(@lt,matT,matSub(k,:)) bsxfun(@gt,matT,matSlb(k,:))],2);
end

在任务管理器上,我看到的只有一个核心是投入的。我漏掉了什么还是这很正常?

EN

回答 1

Stack Overflow用户

发布于 2012-06-06 14:18:30

bsxfun通过在同一个MATLAB进程中启动线程并行执行传递的函数。仅使用Windows中的“任务管理器”,您无法看到正在执行的线程,只能看到正在运行的进程。

请记住,对于受支持的多线程函数,只有在数据足够大的情况下,速度才适用(但在您的示例中,您肯定超过了这个阈值)。

另一种选择是使用并行计算工具箱。使用matlabpool函数,您可以在后面打开MATLAB的新会话,每个会话都在一个单独的进程中。当您调用parfor时,它会将负载分配给所有工人。这种方法扩展得很好,特别是当您在一组计算机上运行它时。

我认为应该可以在相同的代码中使用这两种代码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10914779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档