Trying to get executable to use other computer's multiple cores with matlabpool, but getting error

1 view (last 30 days)
Using Matlab 2011a on a winXP 32 bit machine with 2 cores, I have a program I turned into an executable using Matlab Compiler that I want to run on another windows7, 64 bit, quad core computer. Here's the simplified version...
clear all
close all
matlabpool open 2
currdir = cd;
imDir = [cd '\0625_15\'];
parfor ii = 1:8
%%process code %%
end
y = toc;
matlabpool close
I've installed the MRC on the new machine and have also tried, with success, using 1 processor in the code (ie. not using matlabpool). Using 1 core in the executable runs fine on the new machine.
When the executable runs on the newer machine with "matlabpool open 2", I get an error saying...
Starting matlabpool using the 'localconfig-hyperthread' configuration ... connected to 2 labs
??? The class "distcomp.remoteparfor" is undefined
How can I get the code to run and take advantage of the multiple cores of the newer machine? Do I need to include the local scheduler configuration file? If so, how do I do this exactly?

Accepted Answer

James
James on 25 Jan 2012
Solved the problem. Turns out I needed to make my code a function before compiling it into an executable. I simply added
function testcode
at the top of my code.
This got rid of the
Error in ==> parallel_function at 430
Hope this helps out.

More Answers (2)

Walter Roberson
Walter Roberson on 20 Jan 2012
Yes, you should be using the local scheduler, and there are some other steps you should look at. Please see http://www.mathworks.com/matlabcentral/answers/26472-how-to-define-local-matlabpool-size-at-runtime-for-parallel-computing-toolbox-use-in-compiled-matl
  4 Comments
Walter Roberson
Walter Roberson on 21 Jan 2012
You should be changing the "matlabpool open 2" to "matlabpool" or "matlabpool open".
Note also in the documentation "Note A compiled application should set mcruserdata ParallelConfigurationFile before calling any Parallel Computing Toolbox™ code."
It appears to me from the discussion in that other thread and the documentation pointed to, that the cluster vs non-cluster is not important for this purpose.
Regrettably, standing on the downtown corners, holding out a hat, and asking, "Spare Parallel Computing Toolbox?" has only netted me two bus tickets, a used comb, half a submarine sandwich, and 43 cents in change, so I cannot test these matters myself.

Sign in to comment.


James
James on 24 Jan 2012
When I run my executable on the machine with matlab, I am getting the following error...
--- Starting matlabpool using the 'local' configuration ... connected to 2 labs. ??? The class "distcomp.remoteparfor" is undefined. Perhaps Java is not running.
Error in ==> parallel_function at 430
Error in ==> testcode at 11
MATLAB:subscripting:undefinedClass
I get the same error on the machine without matlab as well. Here is my code. Compiled.mat is the local parallel configuration...
clear all
close all
% Set the Parallel Configuration file:
if(isdeployed)
matfile = 'compiled.mat';
setmcruserdata('ParallelConfigurationFile',matfile);
end
matlabpool open
parfor ii = 1:8
disp(ii)
end
matlabpool close
It seems to be having an issue with the parfor line. I've checked the following thread below for answers, but still no luck. Can anyone help me out? http://www.mathworks.com/matlabcentral/answers/19169-parfor-error-after-compiled

Categories

Find more on Introduction to Installation and Licensing 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!