MATLAB Answers

Run function on GPU, Matlab 2011a

1 view (last 30 days)
Hi,
I saw that one can run matlab function on the GPU in Matlab 2011a. In the introductory video they run the function phaseangle(gx,gy), where gx and gy are matrices on the GPU, then these can be speed up by using arrayfun(@phaseangle, gx, gy). which implies that the function phaseangle is run for each element in gx and gy
Now, I not only have a function(x,y) with two input arguments, but I have a function with arguments function(x,y, parameter). Can I somehow run this on the GPU as I can build matrices for my arguments x,y but parameter is supposed to be the same for all x,y.... Thanks a lot.

  0 Comments

Sign in to comment.

Accepted Answer

John Melonakos
John Melonakos on 24 Jul 2011
Jacket's GCOMPILE/ARRAYFUN functions will get you what you want. Check it out here: http://wiki.accelereyes.com/wiki/index.php/GCOMPILE_Usage

  0 Comments

Sign in to comment.

More Answers (1)

Edric Ellis
Edric Ellis on 6 Jul 2011
Yes, you can do that. The GPU variant of arrayfun has been slightly expanded from the standard MATLAB version to allow scalar expansion. This is mentioned in the doc:

  2 Comments

Michael
Michael on 6 Jul 2011
Thanks for the answer. I guess maybe I wasn't quite clear. In fact I need to pass over another large matrix to the GPU which needs to be used for evaluating the function at each x and y. The doc seems to say that if I pass a matrices X,Y,over to the GPU, then the code run X(i,j), Y(i,j). But I have an additional matrix Z that I need to pass to the GPU and in the for each i, j the entire matrix Z needs to be used, not just element Z(i,j). Is that possible somehow? Thanks.
Edric Ellis
Edric Ellis on 7 Jul 2011
Unfortunately, I think not - arrayfun deals only with scalar elements.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!