How to use parallel 'for' loop in Octave or Scilab?
Solution 1
parfor
is not really implemented in octave yet. The keyword is accepted, but is a mere synonym of for
(http://octave.1599824.n4.nabble.com/Parfor-td4630575.html).
The pararrayfun
and parcellfun
functions of the parallel package are handy on multicore machines.
They are often a good replacement to a parfor loop.
For examples, see http://wiki.octave.org/Parallel_package. To install, issue (just once)
pkg install -forge parallel
And then, once on each session
pkg load parallel
before using the functions
Solution 2
In Scilab you can use parallel_run:
function a=g(arg1)
a=arg1*arg1
endfunction
res=parallel_run(1:10, g);
Limitations
- uses only one core on Windows platforms.
- For now, parallel_run only handles arguments and results of scalar matrices of real values and the types argument is not used
- one should not rely on side effects such as modifying variables from outer scope : only the data stored into the result variables will be copied back into the calling environment.
- macros called by parallel_run are not allowed to use the JVM
- no stack resizing (via gstacksize() or via stacksize()) should take place during a call to parallel_run
Admin
Updated on June 05, 2022Comments
-
Admin almost 2 years
I have two for loops running in my Matlab code. The inner loop is parallelized using Matlabpool in 12 processors (which is maximum Matlab allows in a single machine).
I dont have Distributed computing license. Please help me how to do it using Octave or Scilab. I just want to parallelize 'for' loop ONLY.
There are some broken links given while I searched for it in google.