matlab struct to gpuArray

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)

 Réponse acceptée

Edric Ellis
Edric Ellis le 12 Avr 2013

2 votes

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 commentaires

EssGee
EssGee le 12 Avr 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?
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.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Startup and Shutdown dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by