How to use Sum and Dot function in GPU computation with arrayfun?
3 vues (au cours des 30 derniers jours)
I am trying to find a dot product of two arrays. The given code below is an example. I am new to GPU computing and any help is appreciated.
The main function is:
a = [1,2,3,4];
b = [5,6,7,8];
funOut = arrayfun(@protoDotProd,a,b);
The function where the dot product is below:
function funOut = protoDotProd(a,b)
cTemp = a+b; % Just an example. In reality, lots of operations
% funOut = dot(a,cTemp);
% funOutTemp = a.*cTemp;
% funOut = sum(funOutTemp);
funOut = sum(a .* cTemp);
None of these options are working and giving me an error:
Error using dotTest
Function passed as first input argument contains unsupported or unknown function 'sum' (or 'dot' for option 1).
For more information see Tips.
Error in 'protoDotProd' (line: 6)
Joss Knight le 28 Déc 2022
You cannot perform vector operations in GPU arrayfun. The a and b arguments to your function are not the whole array, they are the scalar values of each element.
Do your element-wise operations ("lots of operations" in your words, followed by the element-wise multiplication) inside your arrayfun function and then do the sum.