我在Matlab代码中有两个for循环。内部循环使用Matlabpool在12个处理器上并行化(这是Matlab在单台计算机上允许的最大数量)。
我没有分布式计算许可证。请帮我解决如何使用Octave或Scilab完成它。我只想并行化'for'循环。
在我通过谷歌搜索时,发现了一些损坏的链接。
我在Matlab代码中有两个for循环。内部循环使用Matlabpool在12个处理器上并行化(这是Matlab在单台计算机上允许的最大数量)。
我没有分布式计算许可证。请帮我解决如何使用Octave或Scilab完成它。我只想并行化'for'循环。
在我通过谷歌搜索时,发现了一些损坏的链接。
parfor
在Octave中尚未真正实现。该关键字被接受,但仅是for
的同义词(http://octave.1599824.n4.nabble.com/Parfor-td4630575.html)。
并行软件包的pararrayfun
和parcellfun
函数对于多核机器非常方便。
它们通常可以替代parfor
循环。
有关示例,请参见http://wiki.octave.org/Parallel_package。 要安装,请发出以下命令(只需一次)
pkg install -forge parallel
然后,在每个会议上都是如此。
pkg load parallel
在使用这些函数之前
function a=g(arg1)
a=arg1*arg1
endfunction
res=parallel_run(1:10, g);
parfor
结构:parfor i=1:10
# do stuff that may run in parallel
endparfor
更多信息请参考:help parfor
parfor
命令以与MATLAB兼容。在3.4
版本中,Octave会因语法问题而反对使用parfor
。 - hpauljparallel_run
可以基于子进程(而不是线程)进行真正的并行计算(而不仅仅是向量化)。 - Stéphane Motteletparallel_run
是使用 OpenMP 还是 MPI 进行并行化?我的上述定义是否正确? - Foad S. Farimaniparallel_run
使用OpenMP。 - Stéphane Mottelet