【问题标题】:Multi-threading in MATLABMATLAB 中的多线程
【发布时间】:2010-12-20 23:27:11
【问题描述】:

我已经阅读了 MATLAB 关于多线程的信息以及它是如何内置在某些函数中的。但是,我的要求不同。 比如说,我有 3 个函数:fun1(data1)、fun2(data2)、fun3(data3).... 我可以在这些函数之间实现多线程吗?我实际上有 300 多个使用大量数据的函数。多线程可以帮助我减少很多时间。请提出一个命令或我可以进一步研究的东西。谢谢!

【问题讨论】:

  • 您是要运行 fun1 以便它使用多个处理器,还是要在一个处理器上运行 fun1,在第二个处理器上运行 fun2,等等?

标签: multithreading matlab


【解决方案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
    funList{i}(dataList{i});
end

编辑: 从 Matlab 的 R2015a matlabpool 函数 has been removed 开始,您需要改为调用 parpool

【讨论】:

  • 如果函数有输出变量,它们可以被收集到一个单元格数组中,例如outList{i}=funList{i}(dataList{i}).
  • 在 parfor 之前使用 matlabpool mathworks.de/help/toolbox/distcomp/matlabpool.html 命令,否则 parfor 将只运行 1 个线程。
【解决方案2】:

尝试查看Parallel Computing Toolbox.(不幸的是,我不太熟悉它,但这似乎是正确的地方。)查看gatherparallel for-loops

【讨论】:

    猜你喜欢
    • 2011-10-09
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多