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

4 visualizzazioni (ultimi 30 giorni)
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?

Risposta accettata

James
James il 25 Gen 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.

Più risposte (2)

Walter Roberson
Walter Roberson il 20 Gen 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 Commenti
Walter Roberson
Walter Roberson il 21 Gen 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.
James
James il 24 Gen 2012
Changing to just matlabpool open helped, but I am now getting another error. See next post...

Accedi per commentare.


James
James il 24 Gen 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

Categorie

Scopri di più su Introduction to Installation and Licensing in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by