MATLAB 中的多线程
Posted
技术标签:
【中文标题】MATLAB 中的多线程【英文标题】:Multi-threading in MATLAB 【发布时间】:2010-12-20 23:27:11 【问题描述】:我已经阅读了 MATLAB 关于多线程的信息以及它是如何内置在某些函数中的。但是,我的要求不同。 比如说,我有 3 个函数:fun1(data1)、fun2(data2)、fun3(data3).... 我可以在这些函数之间实现多线程吗?我实际上有 300 多个使用大量数据的函数。多线程可以帮助我减少很多时间。请提出一个命令或我可以进一步研究的东西。谢谢!
【问题讨论】:
您是要运行 fun1 以便它使用多个处理器,还是要在一个处理器上运行 fun1,在第二个处理器上运行 fun2,等等? 【参考方案1】:如果您想在不同的处理器上运行一批不同的函数,可以使用 Parallel Computing Toolbox,更具体地说,是 parfor 循环,但您需要将函数作为句柄列表传递。
funList = @fun1,@fun2,@fun3;
dataList = data1,data2,data3; %# or pass file names
matlabpool open
parfor i=1:length(funList)
%# call the function
funListi(dataListi);
end
编辑:
从 Matlab 的 R2015a matlabpool
函数 has been removed 开始,您需要改为调用 parpool
。
【讨论】:
如果函数有输出变量,它们可以被收集到一个单元格数组中,例如outListi=funListi(dataListi)
.
在 parfor 之前使用 matlabpool mathworks.de/help/toolbox/distcomp/matlabpool.html 命令,否则 parfor 将只运行 1 个线程。【参考方案2】:
尝试查看Parallel Computing Toolbox.(不幸的是,我不太熟悉它,但这似乎是正确的地方。)查看gather
和parallel for-loops。
【讨论】:
以上是关于MATLAB 中的多线程的主要内容,如果未能解决你的问题,请参考以下文章