Frage

Ich habe eine harte Zeit mit einem Experiment aufbauen, wo ich Speicher mit CUDA auf dem Gerät zuzuordnen, nehmen Sie diesen Zeiger auf Speicher auf dem Gerät, verwenden Sie es in OpenCL, und die Ergebnisse zurück. Ich möchte sehen, ob dies möglich ist. Ich hatte eine harte Zeit, um ein CUDA-Projekt an der Arbeit, damit ich nur Nvidias Template-Projekt in ihrem SDK verwendet. In der Make-Datei habe ich -lOpenCL zum Libs Abschnitt des common.mk. Alles ist in Ordnung, wenn ich das tun, aber wenn ich #include <CL/cl.h> zu template.cu hinzufügen, damit ich anfangen kann OpenCL Telefonieren, ich einen 100 Fehler verwinden. Sie sehen alle ähnlich wie diese, aber mit unterschiedlichen Funktionsnamen am Ende:

  

/usr/lib/gcc/x86_64-linux-gnu/4.4.1/include/xmmintrin.h (334): Fehler:   identifier "__builtin_ia32_cmpeqps" ist nicht definiert

Ich habe eine harte Zeit, herauszufinden, warum. Bitte helfen Sie, wenn Sie können. Auch wenn es einen einfacheren Weg, ein Projekt einrichten, die der Lage sein, die CUDA und OpenCL-APIs aufrufen lassen Sie mich wissen.

War es hilfreich?

Lösung

Ich habe nicht wirklich mit CUDA gearbeitet, so dass ich weiß nicht, wie hilfreich ist meine Antwort.

Von dem, was ich verstehe, Sie versuchen, direkt zu verwenden OpenCL von Ihrem cuda HOSTCODE, die, wenn ich mich richtig mit einigen Compiler von nvidia statt der Standard-gcc kompiliert Speichern ist. Das Problem ist also wahrscheinlich, dass dieser Compiler nicht implementiert die notwendigen builtins zur Arbeit mit den genannten Header. Schauen Sie hier für ein ähnliches Problem und es ist Lösung: http://forums.nvidia.com/lofiversion/index.php?t88573.html

Es scheint, Sie haben alles zu setzen, die die OpenCL api in eine andere (nicht CUDA) Übersetzungseinheit benötigt, so dass es durch die nicht nvidia-Compiler kompiliert werden.

Allerdings würde ich nicht auf diesem Arbeits zählen (seit OpenCL Puffer sind nicht nur Zeiger auf den Speicher, sondern sollten einige Metainformationen enthalten), einfach weil es keinen wirklichen Grund sollte es funktionieren und wenn ja gibt es keine Garantie dass es auch weiterhin zu tun.

Was könnten Sie versuchen, wenn Sie wirklich wollen, ist mit OpenGL für die Interop, da sowohl OpenCL und CUDA Erweiterungen ermöglichen Puffer von opengl Puffer zu schaffen.

Doch warum brauchen Sie, dies zu tun? Was Sie halten verwenden Umsetzung kurzfristigen Apple, da IIRC ist es Open Source und das meiste davon (die OpenCL-Teile) sollte sowieso plattformunabhängig sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top