Vecteur d'accès de type OpenCL
J'ai une variable au sein d'un noyau, comme:
int16 element;
Je voudrais savoir si il existe un moyen pour enrayer la troisième int dans l'élément comme
element[2]
de sorte que je serais comme même que l'écriture de l'élément.s2
Alors, comment puis-je faire quelque chose comme:
int16 element;
int vector[100] = rand() % 16;
for ( int i=0; i<100; i++ )
element[ vector[i] ]++;
La façon dont je l'ai été:
int temp[16] = {0};
int16 element;
int vector[100] = rand() % 16;
for ( int i=0; i<100; i++ )
temp[ vector[i] ]++;
element = (int16)(temp[0],temp[1],temp[2],temp[3],temp[4],temp[5],temp[6],temp[7],temp[8],temp[9],temp[10],temp[11],temp[12],temp[13],temp[14],temp[15]);
Je sais que c'est terrible, mais ça fonctionne 😉
Vous pouvez utiliser les structures et les tableaux comme dans C:
Il n'est pas de demander à propos des tableaux de vecteurs. Il leur demande sur l'accès à l'composantes d'un vecteur à l'aide de la notation de tableau.
int16 element[3];
Ou peut-être que je ne comprends pas la question...Il n'est pas de demander à propos des tableaux de vecteurs. Il leur demande sur l'accès à l'composantes d'un vecteur à l'aide de la notation de tableau.
OriginalL'auteur Caslu | 2012-03-20
Vous devez vous connecter pour publier un commentaire.
Eh bien, il est encore plus sale :), j'espère que OpenCL fournit la meilleure façon de traverser les éléments du vecteur.
Voici ma façon de faire.
Btw fonction rand() n'est pas disponible dans OpenCL noyau, comment avez-vous le faire fonctionner ??
OriginalL'auteur
AMD recommande obtenir des composantes du vecteur de cette façon:
Mettre le tableau de masques dans un OpenCl constante de la mémoire tampon:
À l'intérieur du noyau écrire quelque chose comme ceci:
est-ce exclusivement pré-GCN? savez-vous si il est conforme à la norme ou au moins si il est toujours recommandé et pris en charge dans les plus récents d'Amd?
OriginalL'auteur aplavin
À l'aide de pointeurs est une solution très simple
OriginalL'auteur MindX
Il est possible, mais il n'est pas aussi efficace que le direct de la matrice de l'accès.
Mais bien sûr, si vous avez besoin de composants-sage l'accès de cette façon, alors les chances sont que vous êtes mieux de ne pas l'utilisation de vecteurs.
OriginalL'auteur user1111929
- Je utiliser cette solution de contournement, en espérant que les compilateurs sont assez intelligents pour voir ce que je veux dire (je pense que l'accès à l'élément est une grave omission, forme de la norme):
OriginalL'auteur eudoxos
Non c'est pas possible. Au moins pas de façon dynamique lors de l'exécution. Mais vous pouvez utiliser une "compilation"de l'index pour accéder à un composant:
Voir http://www.khronos.org/registry/cl/specs/opencl-1.1.pdf Section 6.1.7
OriginalL'auteur Daniel