parallelization and mex-compiled code

2 visualizaciones (últimos 30 días)
martin
martin el 6 de Feb. de 2014
Comentada: martin el 9 de Feb. de 2014
I want to optimize a mex-compiled function (fortran-90 source) defined over an 1D interval by computing its values on a sufficiently fine sampling. It works fine with a for-loop but when I try parfor (for speed) I get crashes in the mex-compiled code (getting a error from one of the workers). Is this a documented problem, and does anyone have suggestions how to localize what goes wrong?
I run MatlabR2013a and Ubuntu 13.10 on a 16 core (32 virtual) machine and I get 12 workers when I do matlabpool.
  1 comentario
Matt J
Matt J el 6 de Feb. de 2014
No, there is no general prohibition against using mex files with parfor. Show us the plain for-loop and the parfor version.

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 6 de Feb. de 2014
Editada: Matt J el 6 de Feb. de 2014
You should try running a plain for-loop first, but with the iterations in random order, i.e., instead of
for i=1:n
...
end
run as
for i=randperm(n)
...
end
This is a good way to test whether your code is independent of the order of the iterations (a basic requirement of parfor) before the Parallel Computing Toolbox even gets involved.
  5 comentarios
Matt J
Matt J el 6 de Feb. de 2014
Can you try it on a different machine to see if it's hardware problem? I don't see anything wrong with the code.
martin
martin el 9 de Feb. de 2014
Thanks for your input, I will try another machine asap. Just an additional observation: The program crashes on the fortran90 statement "call mxCopyPtrToReal8(inptr_xdim,realxdim,1)" i.e a standardconstruction right out of the manualmapges for mex

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Parallel Computing Fundamentals en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by