Domanda

Ho avuto un momento difficile la creazione di un esperimento in cui ho allocare memoria con CUDA sul dispositivo, prendere quel puntatore alla memoria del dispositivo, usarlo in OpenCL, e restituire i risultati. Voglio vedere se questo è possibile. Ho avuto un momento difficile ottenere un progetto CUDA per lavoro quindi ho solo usato progetto modello di Nvidia nella loro SDK. Nel makefile ho aggiunto -lOpenCL alla sezione libs del common.mk. Tutto va bene quando lo faccio, ma quando aggiungo #include <CL/cl.h> a template.cu modo che io possa fare per chiamare OpenCL, ottengo più di 100 errori. Sembrano tutti simile a questo, ma con diversi nomi di funzione alla fine:

  

/usr/lib/gcc/x86_64-linux-gnu/4.4.1/include/xmmintrin.h (334): errore:   identificatore "__builtin_ia32_cmpeqps" è definito

Sto attraversando un periodo difficile capire perché. Si prega di aiutare se potete. Inoltre, se c'è un modo più semplice per impostare un progetto che sarete in grado di chiamare l'API CUDA e OpenCL fatemi sapere.

È stato utile?

Soluzione

Non ho davvero lavorato con CUDA, quindi non so come sia la mia risposta è.

Da quello che ho capito che si sta tentando di utilizzare OpenCL direttamente dal hostcode CUDA, che è se non ricordo male compilato utilizzando alcuni compilatore di nvidia invece il gcc standard. Quindi il problema è probabilmente che questo compilatore non implementa i comandi incorporati necessarie per lavorare con le intestazioni citate. Guardate qui per un simile problema ed è la soluzione: http://forums.nvidia.com/lofiversion/index.php?t88573.html

Sembra devi mettere tutto ciò che ha bisogno l'API OpenCL in una differente (non CUDA) unità di compilazione in modo che possa essere compilato dal compilatore non nvidia.

Comunque non vorrei contare su questo lavoro (dal buffer OpenCL non sono solo puntatori alla memoria, ma dovrebbero contenere alcuni metainformations a), semplicemente perché non c'è vera ragione dovrebbe funzionare e se lo fa non v'è alcuna garanzia che continui a farlo.

Che cosa si potrebbe provare se si vuole veramente sta usando OpenGL per l'interoperabilità, in quanto sia OpenCL e CUDA hanno le estensioni per consentire la creazione di buffer dai buffer OpenGL.

Tuttavia perché avete bisogno di fare questo? Che cosa ti impedisce di utilizzare a breve termine l'implementazione di Apple, in quanto IIRC è open source e la maggior parte di esso (le parti OpenCL) dovrebbe essere indipendente dalla piattaforma in ogni modo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top