This version has a few additional settings:
- progress step size: for loops with a large number of iterations crash in Edric Ellis' implementation.
By setting the progress step size, for example to 1%, crashing of Matlab is prevented.
- width of the screen
- height of the screen
How to start?
1) go to the directory where you saved the m file
2) change example.m if you want
In the command window:
3) enter matlabpool open
4) enter pctRunOnAll javaaddpath java
5) enter example
Hello I receive the following java error for each iteration of the parfor loop. The progress bar initially comes up, but the increment step never works and the progress bar never updates. Can someone help me understand how to fix this error?
For very large arrays the crash still happens - i.e for an array of 2.5e10 elements (as an array of singles), this still throws "java.lang.IllegalArgumantException: invalid range properties", irrespective of the value of progressStepSize.
very useful in my parallel simulations! by the way, whenever you run parallel simulations where you don't know in advance the number of cycles of the parfor, it would be very useful to have a function to update the total number of cycles given at construction time...
Works perfectly in my application, which is a deployed parallel function.
When deploying a function using this progress monitor note that "pctRunOnAll javaaddpath java" will have no effect, you need to embed the folder containing the java classes into the CTF archive when you compile... then it runs like a charm :)
I wonder if this could be enhanced with a button to cancel the jobs. For ex: place a button on the form that sets a variable and when updating the percent done on the jobs, it could return the signal to quit running.
Just a thought from someone who knows nothing about Java. :)
My previous comment is gone but this was in relation to monotoring progress when using nexted loops or events that occur more than once per parfor loop iteration. E.g.:
%increase ppm here if mod(xx,..
Got it to work by setting an apropriate N size (N1*N2*N3), I didn't use xx but if the inner for loops are not parfor loops then counters can be used (i.e. something like xx=xx+1 for each inner iteration).