Error when running several Matlab scripts concurrently
4 views (last 30 days)
Show older comments
Hello,
I have a single-threaded script that when run, works perfectly as expected. However, in a bid to get my work done faster on my multi-core machine, I want to run several instances of the script simultaneously. This works usually, each running on a different core and giving me results.
However, very frequently one of the scripts will simply die with a strange syntax error if there are multiple scripts running. The error I got from the last such incident was:
[user@host ~/script_dir] ??? end
|
Error: Illegal use of reserved keyword "end".
??? end
|
Error: Illegal use of reserved keyword "end".
[1]- Done
This is complaining about some part - unfortunately impossible to identify - failing. The line it complains about changes each time, sometimes appearing fragmented (for example, it might say something like unknown var 'ormance' which seems to be a truncation of an actual variable performance). The error, however, isn't the code - it's something to do with the fact there are multiple scripts running at once, as if they are somehow interfering. Note that if a script does succeed, its output is correct.
Any ideas?
The machine is a RHEL5.6 box with 8 cores. Matlab is 7.11.0.584. The script is made up of multiple classes and files.
Thanks!
0 Comments
Answers (1)
Jason Ross
on 29 Apr 2011
Are you sharing a directory to store intermediate results, data files, temp files, etc? If you have filenames that are the same in a single directory, this could confuse your application. You might look into using separate (working) directories for each case. If you are putting temp files in /tmp, make sure they are uniquely named per invocation to avoid collisions and confusion.
Are you opening the same file with the multiple instances and trying to modify it? Check any statements that open files and make sure that you are indeed opening any shared files as readonly, and not inadvertently modifying things with multiple processes.
I would suggest that you start creating some log files -- separate ones for each process -- that you write into to get an idea of what's going on when you get the error. I know you mentioned that it's in different places, but perhaps with more logging you could possibly identify some common thing that's getting confused.
2 Comments
Jason Ross
on 29 Apr 2011
Is the directory local or on a network? There are plenty of cases I've encountered where where latency/filesystem caching has caused odd errors that inspire hair pulling. You could possibly try moving things local as part of a diagnostic.
You might also try changing the permissions on your input scripts/functions/classdef files to read only (or read/execute, as appropriate) and see if something funky is going on where you least expect it to happen.
Good luck, a lot of times these concurrency issues can be very difficult to pin down.
Also, as a shameless plug -- have you considered using Parallel Computing Toolbox? I know there are problems it can't tackle for one reason or another but just wanted to suggest it.
See Also
Categories
Find more on Entering Commands in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!