Atomkraft in CUDA? Welche Header-Datei soll enthalten sein?

8

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.

%Vor%     
smilingbuddha 03.11.2011, 21:45
quelle

1 Antwort

13

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:

%Vor%

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.

    
Jared Hoberock 03.11.2011, 21:50
quelle

Tags und Links