J'essaie de construire une application triviale à l'aide de Thrust / Cuda 4.0 et obtenez de nombreux avertissements "AVERTISSEMENT: impossible de dire quel pointe pointe, en supposant que quelqu'un d'autre ait vu cela et comment puis-je l'avoir vu Désactivez-les ou corrigez mon code? P>
Merci, P>
ADE P>
Voici mon code. P>
Hello.h P> < pré> xxx pré>
hello.cu p> la sortie p> Il y a beaucoup de ces . p> p>
3 Réponses :
Alors ... le figuré et pensais que je le posterais ici. La solution est soit p>
n'utilisez pas le drapeau -g sur nvcc p>
ou p>
Compilez pour arch SM_20 (Fermi) si vous ciblez un tel appareil P>
Il s'agit d'une limitation connue de NVCC et non d'un bug de poussée. Voir: p>
Fermi utilise une adressage uniforme de l'espace mémoire partagé et global, tandis que les messages pré-Fermi ne le font pas. P>
Pour l'affaire Pre-Fermi, lorsque vous obtenez une adresse, vous ne savez pas si cela devrait être partagé ou global. Le compilateur essaie de le comprendre, mais parfois, cela ne peut pas. Lorsque cela se produit, le message apparaît - "Assumer global" est correct dans 99,999% des cas, car lorsque vous souhaitez qu'un pointeur de mémoire partagée, vous prenez explicitement une adresse d'une variable partagée et que le compilateur peut reconnaître cela. p>
Pour les cartes Fermi, partagée ou globale peut être déduite au moment de l'exécution (basée sur l'adresse) et aucune hypothèse ne doit être faite par le compilateur. P>
Suggestionnaire: ignorer ces avertissements. P>
Si vous utilisez Mirosoft Visual Studio: à partir du projet-> Propriétés-> Cuda C / C ++ -> Device-> Génération de code; Changer le Compute_10, SM_10 à Compute_20, SM_20 P>