matlab struct to gpuArray

9 views (last 30 days)
EssGee
EssGee on 12 Apr 2013
Is it possible to transfer a matlab struct to the GPU? So for example is something like this possible:
s.a = 1
s.b = [1; 2; 3]
s.c = []
s.d = 5
sgpu = gpuArray(s)

Accepted Answer

Edric Ellis
Edric Ellis on 12 Apr 2013
You cannot make a structure on the gpu, but you can make a structure containing gpuArrays.
s.a = gpuArray(1)
s.b = gpuArray([1; 2; 3]);
...
  2 Comments
EssGee
EssGee on 12 Apr 2013
Thanks Eric, I was hoping not to go that route. So if the structure has many variables , they would have to individually transferred as you mention.
I assume each of these operations corresponds to a cudaMEMcpy, or is it an asynchronous memcopy with unified memory?
Edric Ellis
Edric Ellis on 15 Apr 2013
You can use STRUCTFUN to convert a bunch of fields at a time, like this
s.a = magic(3); s.b = magic(4);
gs = structfun(@gpuArray, s, 'UniformOutput', false);
The gpuArray function is indeed currently equivalent to a cudaMemcpy call.

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!