From: martin Müllinger on
Hello,

i have problems using parfor with the sim-command and using non local workers.
With local workers the scripts works fine, without any problems. (A couple (numSimulations) of different parameter sets are stored in the cell Simulation. I am using rapid Acceleration target and tuneable parameters therfore)

mdl=’test_simulation’;
matlabpool open local
out = cell(1, numSimulations);
parfor(i = 1:numSimulations)
out{i} = sim(mdl, Simulationen{i});
end
matlapool close


But when i use non local workers (the config with the parallel Configuration Manager seems to be ok, the Jobmanager is running, the workers on the remote machine are connected). I can connect to the labs (matlabpool open jobmanagerconfig1)
But the simulation does not start with the following error :
code:
mdl=’test_simulation’;
matlabpool open jobmanagerconfig1
out = cell(1, numSimulations);
parfor(i = 1:numSimulations)
out{i} = sim(mdl, Simulationen{i});
end
matlapool close

error:

??? Error using ==> parallel_function at 598
Error in ==> parallel_function>make_general_channel/channel_general at 879
Unable to open file for reading: "test_simulation.mdl".

Something is not right with paths. Any ideas how to fix this?


Just do be sure the jobmanager and Host config works i tried :

matlabpool open jobmanagerconfig1
parfor(i = 1:numSimulations)
eig(rand(1000))
end
matlapool close

It does what it should do :)

Hopefully someone can help me,
nice wishes
Martin
From: Edric M Ellis on
"martin Müllinger" <zmaier(a)gmx.de> writes:

> i have problems using parfor with the sim-command and using non local
> workers. [...]


> But when i use non local workers (the config with the parallel
> Configuration Manager seems to be ok, the Jobmanager is running, the
> workers on the remote machine are connected). I can connect to the
> labs (matlabpool open jobmanagerconfig1)
> But the simulation does not start with the following error :
> code:
> mdl=&#8217;test_simulation&#8217;;
> matlabpool open jobmanagerconfig1
> out = cell(1, numSimulations);
> parfor(i = 1:numSimulations)
> out{i} = sim(mdl, Simulationen{i});
> end
> matlapool close
>
> error:
>
> ??? Error using ==> parallel_function at 598
> Error in ==> parallel_function>make_general_channel/channel_general at 879
> Unable to open file for reading: "test_simulation.mdl".

You need to make "test_simulation.mdl" available on the MATLAB path of
the workers. MATLABPOOL tries to keep the MATLAB path in sync between
the client and the workers, providing the path is accessible on both
machines, so it should work to put test_simulation.mdl into a shared
location on the filesystem (i.e. some sort of network drive or similar).

Cheers,

Edric.
From: martin Müllinger on
thx for the fast answer.

I stored the whole folder on a net-drive. It is accessable from both computers. The folder (and all subfolders) are included in the Matlab-Path (also on both computers).
Now this error-message comes :

??? Error using ==> parallel_function at 598
Error in ==> parallel_function>make_general_channel/channel_general at 879
Executable not found.

I am using the rapid-accelerator target. It was necessary because i want to simulation different parameter-sets. And with the rapid-accelerator mode i can easily define tunable parameters. Those are stored in the cell called Simulation.

Any further ideas?
From: Rajesh Pavan on
"martin Müllinger" <zettinger(a)gmx.de> wrote in message <i0civ8$9ld$1(a)fred.mathworks.com>...
> thx for the fast answer.
>
> I stored the whole folder on a net-drive. It is accessable from both computers. The folder (and all subfolders) are included in the Matlab-Path (also on both computers).
> Now this error-message comes :
>
> ??? Error using ==> parallel_function at 598
> Error in ==> parallel_function>make_general_channel/channel_general at 879
> Executable not found.
>
> I am using the rapid-accelerator target. It was necessary because i want to simulation different parameter-sets. And with the rapid-accelerator mode i can easily define tunable parameters. Those are stored in the cell called Simulation.
>
> Any further ideas?

Hi,
From your earlier post, it appears that you have shared file system, in that case one thing to try is to cd to the same directory inside the parfor loop where the rapid accelerator target was originally built.
If you don't have shared file system, you need to add the directory where the rapid accelerator target was built to filedependencies and then cd to the directory where these filedependencies are unpacked.

Let me know if you still have problems.

Thanks,
Rajesh
From: martin Müllinger on
Hi,

On my PC, the workingdir is c:\working. Inside this folder the m-script and the mdl.file is stored. After compiling a new directory c:\working\slprj with a couple of subdirs is generated. I added the c:\working folder with all subdirectories to the Matlab path.

In the configuration manager of the the jobmanager is added c:\working to the Filedependencies. Now after starting the matlabpool, the content of c:\working is copied to the remote Computer, where the matlabworkers are running (The folder is a bit strange c:\Windows\Temp\MDCE\checkpoint\RemotePC_RemotePC_worker01_mlworker_log\matlabDependencyDir)
Still the same error message (Executable not found).

The m-script looks like (very reduced) :

initialisation of the variables
compiling the model
creating the different Raipd Acceleration ParamterSets (Simulationen)

open matalbpool jobmanager1

parfor(i = 1:length(numsims))
out{i} = sim(mdl, Simulationen{i});
disp([num2str(i)];
end

THX again,
Martin