Ist es für die Verwendung atomarer Operationen in CUDA erforderlich, eine CUDA-Headerdatei einzubeziehen? Der CUDA-Programmierleitfaden scheint dazu eng geschnallt zu sein.
Der unten angegebene Code glmax.cu gibt mir den folgenden Kompilierungsfehler.
%Vor% Hier ist der Code. Es berechnet im Grunde den maximalen Wert eines Arrays auf der GPU mit der atomaren Operation atomicMax
. Da ich neu bei CUDA bin, bin ich mir sicher, dass es sich um einen ziemlich naiven Code handelt, aber ich habe dies geschrieben, um mir zu helfen, atomare Operationen zu verstehen.
Ich glaube nicht, dass ein #include
notwendig ist. Atomare Operationen sind nicht auf "Compute Capability" 1.0 ( sm_10
) Geräten verfügbar, für die Sie nvcc
(standardmäßig) kompilieren möchten.
Um atomicMax
in Ihrem Code zu verwenden, geben Sie mindestens -arch=sm_11
in der Befehlszeile an:
Zukünftige Informationen finden Sie in Anhang F des CUDA C-Programmierhandbuchs, um Informationen darüber zu erhalten, welche atomaren Operationen auf Plattformen einer bestimmten Compute-Funktion verfügbar sind.
Natürlich benötigen Sie eine sm_11
-kompatible GPU, um den Code auszuführen. Mein Eindruck ist, dass diese mittlerweile üblich sind.
Tags und Links cuda gpu-atomics