erreur: l'identificateur «float3» n'est pas défini;Lors de l'exécution de la démo oclNbody sur la carte ATI

StackOverflow https://stackoverflow.com/questions/6378813

  •  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?

Était-ce utile?

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.

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