中并行::环路进行测试没有在Win32 :: OLE工作启动Matlab的多个实例,但中并行:: Forkmanager工作原理是利用从Amro的“单”诀窍和线索从http://www.perlmonks.org/bare/ ?NODE_ID = 894058为“的CoInitialize没有被调用”的错误:
前循环使用:
use Win32::OLE; # qw(EVENTS); #Win32::OLE(0.1709) error 0x800401f0: "CoInitialize has not been called"
Win32::OLE->Initialize();
并且循环使用中:
my $ML = Win32::OLE->new('Matlab.Application.single') or die "Cannot start MATLAB";
$ML->{'Visible'}=0;
$ML->Execute('try;cd \''.$wkdir.'\';'.$executable.' '.$file.' '.$countfile.';catch;end;quit;');
只是使用的OLE使用的instesd目的:
system('matlab -automation -wait -r "try;cd \''.$wkdir.'\';'.$executable.' '.$file.' '.$countfile.';catch;end;quit;');
被隐藏Matlab的窗口,我们只是希望它做的工作,但我们得到的荣誉。 使用Perl实现parallellized MATLAB PARFOR影响,我们可以将所有可用的CPU忙于在中并行循环之前分配的任务,并收集/结果这个循环之后结合。
Perl中并行运行MATLAB实例的解决方案
这篇博客探讨了在Perl中使用Win32::OLE启动MATLAB多个实例的问题。作者遇到的问题是Win32::OLE在并行环路中启动MATLAB时会报'CoInitialize has not been called'的错误。通过引入并行::Forkmanager和Amro的技巧,成功避免了该错误,实现了隐藏MATLAB窗口并进行并行计算。这种方式允许充分利用CPU资源,实现MATLAB的PARFOR循环并行化处理任务。
8491

被折叠的 条评论
为什么被折叠?



