MATLAB: Error using gpuArray/arrayfun (‘MCOS’, ‘CLASSDEF’)

arrayfungpugpuarrayoopparallel

Hello,
i am currently trying to do some calculations of my code on gpu. therefore, i call the following lines:
angles=gpuArray(angles);
[obj.Points(1,:),obj.Points(2,:)]=arrayfun(@(x) laser.calccolpnt(x,cell2mat(Obstacles.Obstaclemap),obj.position,obj.direction,obj.range),angles);
without the first line, this works perfectly fine, anyway, when i add the gpuArray command before, this gives me the following error:
Error using gpuArray/arrayfun
Function passed as first input
argument contains unsupported
'MCOS' language feature 'CLASSDEF'.
i even get this, when the called function looks like this:
function [px,py]=calccolpnt(angle,Obstacles,position,direction,range)
px=angle;
py=angle;
end
does anyone know a solution for this problem?
thanks for help.

Best Answer

MCOS appears to be the name of the newer object-oriented system that uses classdef to define objects.
Restrictions on the called functions for gpuarray and arrayfun are described at http://www.mathworks.com/help/distcomp/run-element-wise-matlab-code-on-a-gpu.html#bsnx7h8-1
I gather that the problem here is that the function you are passing is defined in a classdef and that just is not permitted.
You might be able to call a function outside of a classdef that referred to a user-defined object, but I do not know if it is possible or not.
Related Question