Question

Je suis un moment difficile la mise en place d'une expérience où j'allouer de la mémoire avec CUDA sur le périphérique, prendre ce pointeur vers la mémoire sur l'appareil, l'utiliser dans OpenCL, et retourner les résultats. Je veux voir si cela est possible. J'ai eu un moment difficile d'obtenir un projet CUDA au travail donc je viens d'utiliser le projet de modèle de Nvidia dans leur SDK. Dans le makefile j'ai ajouté -lOpenCL à la section libs du common.mk. Tout va bien quand je fais ça, mais quand j'ajoute #include <CL/cl.h> à template.cu pour que je puisse commencer à faire des appels OpenCL, je reçois plus de 100 erreurs. Ils ont tous ressembler à ceci, mais avec des noms de fonctions à la fin:

  

/usr/lib/gcc/x86_64-linux-gnu/4.4.1/include/xmmintrin.h (334): erreur:   identifier "__builtin_ia32_cmpeqps" est définie

J'ai du mal à comprendre pourquoi. S'il vous plait aidez si vous le pouvez. De plus, s'il y a un moyen plus facile de mettre en place un projet qui va être en mesure d'appeler les API CUDA et OpenCL laissez-moi savoir.

Était-ce utile?

La solution

Je n'ai pas vraiment travaillé avec cuda, donc je ne sais pas comment ma réponse est utile.

D'après ce que je comprends que vous essayez d'utiliser OpenCL directement à partir de votre hostcode cuda, qui est si je me souviens bien compilé en utilisant un compilateur de nvidia au lieu du standard gcc. Donc, le problème est probablement que ce compilateur ne met pas en œuvre les builtins nécessaires pour travailler avec les en-têtes mentionnés. Regardez ici pour un problème similaire et il est la solution: http://forums.nvidia.com/lofiversion/index.php?t88573.html

Il semble que vous devez mettre tout ce qui a besoin de l'api OpenCL dans une unité de compilation différente (non cuda) de sorte qu'il sera compilé par le compilateur non nvidia.

Cependant, je ne compterait pas sur ce travail (puisque les tampons OpenCL ne sont pas seulement des pointeurs vers la mémoire, mais doivent contenir des metainformations à), tout simplement parce qu'il n'y a pas de raison que cela devrait fonctionner et si elle ne n'y a aucune garantie qu'il continue de le faire.

Ce que vous pouvez essayer si vous voulez vraiment utilise opengl pour l'Interop, puisque les deux OpenCL et CUDA ont des extensions pour permettre la création de tampons de tampons opengl.

Mais pourquoi avez-vous besoin de faire cela? Ce qui est en vous gardant d'utiliser la de mise en œuvre à court terme Apple, depuis IIRC il est open source et la plupart de celui-ci (les parties OpenCL) devrait être la plate-forme indépendante de toute façon.

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