Error using arrayfun inside spmd function

I'm using spmd to run parallel instances of a function. Inside that function, I'm attempting to use arrayfun. When I run in serial, without spmd, it works fine but more slowly. When using the two features in combination I get this error:
Error detected on worker 3.
The class parallel.internal.types.Atomic has no Constant property or Static method name 'enumerate'.
Is this supported? I see on the linked page that spmd cannot contain par-for loops, but no mention of arrayfun. http://www.mathworks.com/help/distcomp/programming-tips_brukbnp-9.html#brukbnp-12

2 Comments

Do you use arrayfun to run on GPU?
Yes, the data passed into arrayfun is on the GPU.

Sign in to comment.

 Accepted Answer

I believe use of arrayfun (GPU) within spmd itself is supported. Will the following script give an error on your environment?
fun = @(x,y)(x.*y);
spmd
%GPU run code from each worker
R1 = rand(labindex,5,'gpuArray');
R2 = rand(labindex,5,'gpuArray');
R = arrayfun(fun,R1,R2);
end
R
Could you share a sample script that allows us to reproduce the issue?

2 Comments

Your sample code ran perfectly. I ran my code again and I'm no longer receiving the error. All I can think of is bad data in my workspace. Thank you for your help!
Good to hear that you do not get errors anymore!

Sign in to comment.

More Answers (0)

Categories

Asked:

on 1 Sep 2016

Commented:

on 7 Sep 2016

Community Treasure Hunt

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

Start Hunting!