erreur: l'identificateur «float3» n'est pas défini;Lors de l'exécution de la démo oclNbody sur la carte ATI
-
28-10-2019 - |
Question
J'essaie d'exécuter la démo OpenCL de NVidia oclNbody.exe sur la carte ATI Radeo 4850 et je reçois de telles erreurs:
Journal de construction: C: \ DOCUME ~ 1 \ DIMEDR ~ 1 \ LOCALS ~ 1 \ Temp \ OCL27C.tmp.cl (33): erreur: identifiant
"float3" is undefined
REAL3 bodyBodyInteraction (REAL3 ai, REAL4 bi, REAL4 bj, REAL softeningSquared)
^
Et ainsi de suite pour tous les types de données REAL3 utilisant.J'ai vu la spécification OpenCL 1.1 et c'est clairementdit que float3 est pris en charge.J'ai essayé de changer REAL3 avec float3 sans succès.J'ai les derniers pilotes pour ma carte.Utilisation du système d'exploitation Windows XP SP3
Comment puis-je corriger ou contourner cette erreur?
La solution 2
J'ai trouvé une solution de contournement:
- utilisez float 4 au lieu de float3;
- #define ZERO4 {0.0f, 0.0f, 0.0f, 0.0f} et utilisez-le à la place ZERO3
- et diminuer le nombre de groupes de travail à 64 (au lieu de 256)
et cela a fonctionné!
Autres conseils
float3
et les autres types de vecteurs à 3 composants ne faisaient pas partie de la spécification OpenCL 1.0;ils ont été ajoutés dans la révision 1.1.Selon la page de compatibilité des pilotes AMD , les cartes Radeon HD 4800 prennent uniquement en charge OpenCL1.0.
Le fait que le compilateur ait essayé d'interpréter float3
comme un identifiant montre qu'il ne s'agit pas d'un type reconnu.