2010-11-04 20 views
1

Salut à tous, je n'ai pas vu beaucoup de syntaxe pour l'allocation variable __constant dans OpenCL dans les guides de Nvidia.Question à propos de la syntaxe pour utiliser le cache constant

Lorsque j'appelle clCreateBuffer, dois-je lui donner l'indicateur CL_MEM_READ_ONLY. Cela ne semble pas déranger que je le mette à CL_MEM_READ_WRITE pour l'instant, bien que je parie que d'essayer d'écrire dans le cache constant dans le noyau va tout gâcher.

Y a-t-il des trucs ou des choses spéciales dont je dois me souvenir du côté hôte? Si je déclare l'argument __constant dans le code du noyau de l'appareil, puis-je utiliser la variable de cache constante tant que je ne lui écris pas?

Répondre

2

Oui, c'est essentiellement ça. Vous devez garder à l'esprit que le cache constant a une taille limite de 64 Ko, cependant. Puisque l'espace d'adresse __constant est intrinsèquement en lecture seule, le compilateur devrait se plaindre si vous essayez d'écrire dessus.

Malheureusement, __constant memory est un peu bogué avec l'implémentation de NVidia. Parfois, le compilateur émettra un code erroné, lit à partir de la mémoire constante, retourne simplement zéro. À partir de la série de pilotes 260.x, ils n'ont pas résolu le problème.