/ / Comment avoir une matrice comme paramètre lorsque vous travaillez avec CUDA et Matlab - c ++, windows, matlab, matrix, cuda

Comment avoir une matrice aussi importante quand on travaille avec CUDA et Matlab - c ++, windows, matlab, matrix, cuda

J'essaie de comprendre comment passer une matricede Matlab vers un fichier C ++ CUDA (* .ptx). Je veux traiter la matrice différemment dans chaque thread! Je ne veux vraiment pas scinder la matrice en différents threads! Je veux que chaque thread ait la même matrice!

Matlab et CUDA (C ++)

J'ai essayé quelque chose comme:

_global_ void radialAverage(int* image[][]) {
...
}

mais cela n'a pas fonctionné. Je reçois l'erreur suivante:

kernel.cu(8): error: an array may not have elements of this type
1 error detected in the compilation of "C:/Users/ADMINI~1/AppData/Loca/Temp/tmpxft_00000c44_00000000-8_kernel.cpp1.ii".

Pouvez-vous penser à un moyen de le faire? Ou est-ce possible?

Btw: Je "n'utilise aucune bibliothèque pour C ++, seulement le CUDA-Api.

Réponses:

1 pour la réponse № 1

La manière correcte de définir le noyau pour passer une matrice de Matlab est clairement indiquée (plusieurs fois) sur la page à laquelle vous avez accédé dans votre question.

En résumé, définissez le noyau comme ceci (Matlab gpuArray est passé automatiquement comme un pointeur de périphérique au noyau):

__global__ void radialAverage(int* image) {
...
}

Après avoir récupéré le noyau en utilisant CUDAKernel à partir de la boîte à outils, créez un entier gpuArray depuis votre matrice Matlab et transmettez-le à la fonction du noyau.