2012-03-26 9 views
1

Ich mag mein CUDA-Programm mit --ptxas-Optionen = -v von nvcc kompilieren zu erreichen registrieren und Speichernutzung, um sie zu benutzen, in CUDA GPU Belegungsrechner.nvcc --ptxas-Optionen = -v (Register und Speichernutzung) ERROR

Fehler: Kennung "atomicAdd" ist nicht definiert

ich atomicAdd in meinem Kernel verwendet haben. Wie kann ich dieses Problem lösen?

Antwort

3

Atomic-Operationen werden nicht von allen GPU Generationen unterstützt und das Standardziel für nvcc ist sm_10. Angenommen, Ihre GPU unterstützen atomare Operationen (siehe CUDA C Programming Guide Einzelheiten darüber, welche Funktionen Ihres GPU unterstützt werden, Anhang F.1), dann werden Sie die Architektur Ziel müssen, z.B. -gencode arch=compute_20,code=\'compute_20,sm_20\' für Fermi und neuer. Weitere Informationen zu den Gencode-Optionen finden Sie unter NVCC manual.

BTW, ist das Hinzufügen der --ptxas-options=-v Flagge tatsächlich das Verhalten ändern? Wenn nicht, dann ist der Titel Ihrer Frage irreführend.

+0

Atomic-Operationen werden von der GPU unterstützt, die ich verwende. Ich habe mein Programm von nvcc -arch = sm_20 test.cu -o test zusammengestellt und das richtige Ergebnis bekommen. Ich möchte nur die erwähnte Option verwenden, um Registrierung und gemeinsame Speichernutzung meines Programms zu erhalten. –

+0

So ist dein Problem behoben? Mit anderen Worten, Sie bekommen den Fehler nicht mehr? – Tom

+0

Nein, mein Problem wurde nicht gelöst. Ich habe immer noch ein Problem mit der erwähnten Option. Ich kann die erwähnte Option nicht verwenden, um mein Programm zu kompilieren. –