Я изучаю функции Matlab GPU.Моя функция myfun
принимает 2 входных параметра delta, p
.В конце концов, я буду применять myfun
ко многим комбинациям delta,p
.Для каждой комбинации delta,p
myfun будет сколько V
удовлетворяет условию delta*V-p>0
, где V = [0:0.001:1]
.В идеале я хочу, чтобы V
было global variable
.Но, похоже, у Matlab GPU есть некоторые ограничения на глобальные переменные.Поэтому я использую другой способ сделать это.Код выглядит следующим образом:
function result = gpueg2()
dd = 0.1;
DELTA = [dd:dd:1];
dp = 0.001;
P = [0:dp:1];
[p,delta]=meshgrid(P,DELTA);
p = gpuArray(p(:));
delta = gpuArray(delta(:));
V = [0:0.001:1];
function [O] = myfun(delta,p)
O = sum((delta*V-p)>0);
end
result = arrayfun(@myfun,delta,p);
end
Тем не менее, это сообщение об ошибке
Function passed as first input argument contains unsupported or unknown function 'sum'.
Но я считаю, sum
применимо в графическом процессоре.
Любойсоветы и предложения высоко ценятся.