Question

Je suis assez nouveau pour OpenCL donc avec moi s'il vous plaît supporter.

Dans la première itération de mon code, je les tampons de mémoire de base pour les grands ensembles de données et les a déclarés mondiale. Mais maintenant que je suis à la recherche d'améliorer le moment, je voulais utiliser pour cette mémoire de texture. Dans la version CUDA, nous utilisons cudaBindTexture et tex1Dfetch pour obtenir les données pour un grand réseau de flotteurs 1D. De ma compréhension de la spécification, la mémoire de texture est la même chose que la mémoire d'image. Toutefois, étant donné qu'il n'y a que des objets d'image 2D et 3D avec des hauteurs et largeurs max, je rencontre quelques problèmes. Mon tableau plus grand que la hauteur / largeur max, mais pas la hauteur max * largeur max. Dois-je convertir mon tableau 1D en 2D? Ou est-il une meilleure façon de le faire?

Ou suis-je complètement?

J'ai lu http://forums.nvidia.com/index.php? ShowTopic = 151743 et http://forums.nvidia.com/index. php? ShowTopic = 150454 mais ils ne sont pas exactement concluante si la mémoire de texture visée à l'meilleures pratiques et Guide de programmation était en fait des objets d'image.

Merci et toute aide / suggestions sont grandement bienvenues!

Était-ce utile?

La solution

J'ai trouvé la meilleure réponse en réponse à mon message sur le forum de NVidia ici .

Autres conseils

  

Mon tableau plus grand que la hauteur / largeur max, mais pas la hauteur max * largeur max. Dois-je convertir mon tableau 1D en 2D?

Oui, le matériel de texture a des contraintes sur les valeurs de l'indice maximal. Si vous dépassez ces valeurs, vous devrez convertir à l'utilisation des valeurs d'index multiples.

Cela dit, je ne dis pas que la conversion à l'accès aux textures va accélérer votre programme.

OpenCL 1.2 prend en charge les textures 1D. Le problème est NVIDIA prend en charge que OpenCL 1.1 contrairement à AMD ou Intel ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top