How to use parallel 'for' loop in Octave or Scilab?

12,671

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
Share:
12,671
Admin
Author by

Admin

Updated on June 05, 2022

Comments

  • Admin
    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.