Utiliser un tableau de données avec la fonction arrayfun (calcul GPU)
Bonjour à tous,
J'aimerais faire du calcul parallèle sur GPU avec Matlab. Normalement la fonction arrayfun permet de faire cela. Dans un cadre classique, ça fonctionne très bien mais dans mon application, j'aimerais ajouter un tableau de données (data dans mon exemple) qui servira à toutes les cellules. Voici un exemple simple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| Nx = 32;
Nz = 64;
x = linspace(0,1,Nx);
z = linspace(0,1,Nz);
[X,Z] = meshgrid(x,z);
Nel = Nx*Nz;
data = randn(1000,1000);
X_gpu = gpuArray(X);
Z_gpu = gpuArray(Z);
O_GPU = arrayfun(@kernelSimple,X_gpu,Z_gpu,Nel,data); |
Cela me renvoie l'erreur:
Code:
1 2 3 4 5
| Error using parallel.gpu.GPUArray/arrayfun
Matrix dimensions must agree.
Error in MAIN_exempleSimple (line 31)
O_GPU = arrayfun(@kernelSimple,X_gpu,Z_gpu,Nel,data); |
En fait, tant que les paramètres d'entrée sont scalaires, cela fonction très bien. J'ai essayé de convertir ma variable data en structure ou cell mais arrayfun ne prend pas ce type de variable en entrée... Avez-vous une idée pour utiliser un tableau en paramètre d'entrée de arrayfun ?
Merci d'avance !
Bonne soirée.
Mcewen