Je viens de passer d'OpenCL 1.0 à 1.1. Quand je fais mon appel à la fonction min(), je reçois la sortie d'erreur:En OpenCL 1.1 mon appel à la fonction min() est ambigu et je ne comprends pas pourquoi
<program source>:45:44: error: call to 'min' is ambiguous
int nFramesThisKernelIngests = min(nFramesToIngest - nAvg*nPP*get_global_id(2), nAvg*nPP);
<built-in>:3569:27: note: candidate function
double16 __OVERLOADABLE__ min(double16, double16);
^
<built-in>:3568:26: note: candidate function
double8 __OVERLOADABLE__ min(double8, double8);
La sortie d'erreur continue pour plus de lignes avec différents types.
Lorsque j'ai tenté d'isoler le problème, get_global_id (2) semble être le problème. Je pensais que lancer get_global_id (2) à un int à partir d'un uint (je crois qu'il renvoie un uint) résoudrait le problème mais ce n'est pas le cas. Est-ce que quelqu'un sait ce qui se passe? J'ai regardé les spécifications 1.0 et 1.1 et je suis toujours confus quant à la raison pour laquelle cela se produit.
Je l'ai fait, convert_int (get_global_id (2)). Cela permet de se débarrasser de l'erreur que j'ai écrite auparavant, mais maintenant je reçois des erreurs de segmentation. Cela pourrait-il avoir quelque chose à voir avec la taille étant de 32 ou 64 bits? Je suis vraiment perdu ... – smuggledPancakes
Un défaut de segmentation est probablement dû à une mauvaise indexation en mémoire ou à une lecture/écriture via des pointeurs hors limites. L'appel de conversion_int est probablement overkill par rapport à un cast de style C. Il n'y a pas assez de contexte dans le code source de la question pour diagnostiquer plus précisément. – grrussel
L'erreur de segmentation semble provenir d'une partie non liée de mon programme. Je crois que ce problème est résolu et il suffit que OpenCL 1.1 soit plus strict sur la façon dont ce paramètre a été calculé. – smuggledPancakes