nvcc fatal: Nicht unterstützte GPU-Architektur 'compute_20

10

Beim Ausführen des Befehls make pycaffeist der folgende Fehler aufgetreten:

NVCC src/caffe/solvers/adadelta_solver.cu nvcc fatal   : Unsupported
gpu architecture 'compute_20' Makefile:594: recipe for target
'.build_release/cuda/src/caffe/solvers/adadelta_solver.o' failed make:
*** [.build_release/cuda/src/caffe/solvers/adadelta_solver.o] Error 1

System Information
------------------

OS: ubuntu: 16.10

CUDA 8.0

cuDNN: 6.0 

CUDA_ARCH: CUDA_ARCH := 

         -gencode arch=compute_20,code=sm_20 \
        -gencode arch=compute_20,code=sm_21 \
        -gencode arch=compute_30,code=sm_30 \
        -gencode arch=compute_35,code=sm_35 \
        -gencode arch=compute_50,code=sm_50 \
        -gencode arch=compute_52,code=sm_52 \
        -gencode arch=compute_60,code=sm_60 \
        -gencode arch=compute_61,code=sm_61 \
        -gencode arch=compute_61,code=compute_61

Kann mir jemand helfen?

Asha Datla
quelle
kleine Änderung cuDNN Version ist 8.0
Asha Datla

Antworten:

16

Was mich betrifft , hatte ich zu Kommentar aus dem -gencode arch=compute_20in Makefile.config:

CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \
    -gencode arch=compute_35,code=sm_35 \
    -gencode arch=compute_50,code=sm_50

Ich habe angehalten, 50weil CUDA deviceQuerymir gezeigt hat Capability Major/Minor version number:

/usr/local/cuda/samples/bin/x86_64/linux/release/deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX 960M"
  CUDA Driver Version / Runtime Version          9.0 / 9.0
  CUDA Capability Major/Minor version number:    5.0
  Total amount of global memory:                 4044 MBytes (4240965632 bytes)
  ( 5) Multiprocessors, (128) CUDA Cores/MP:     640 CUDA Cores
  GPU Max Clock rate:                            1176 MHz (1.18 GHz)
....

Dann liefen Zusammenstellung und Tests gut.

Matthieu
quelle
2

Ich hatte heute Morgen das gleiche Problem. Nach der Installation von CUDA und cuDNN war ein Neustart erforderlich (wie hier vorgeschlagen https://groups.google.com/forum/#!topic/caffe-users/WDOD3E04Avg ), damit CMake die festgelegten Variablen ordnungsgemäß erkannte. Stellen Sie also sicher, dass CUDA und cuDNN ordnungsgemäß installiert sind, und starten Sie Ihr System neu. Wenn der Fehler weiterhin auftritt, verfügen Sie möglicherweise über eine GPU, die nur die Rechenfunktion 2.0 unterstützt. Sie können also CUDA 8.0 ausprobieren, das diese unterstützt. Sie können Ihre GPU hier überprüfen: https://developer.nvidia.com/cuda-gpus

Ich kann bestätigen, dass die Tests auf meinem PC mit aktiviertem CUDA 9.0 und cuDNN 7.0.2 erfolgreich ausgeführt wurden. Nach dem Neustart wurde die GPU-Architektur automatisch auf sm_50 gesetzt. Ich habe eine GTX 750 Ti, die laut Dokumentation CUDA 5.0 unterstützt. Die Konfiguration scheint also jetzt korrekt zu sein! Hier ist der Befehl zum Testen:

make runtest

Wenn beim Kompilieren der Tests Fehler auftreten, können Sie Folgendes versuchen:

make runtest clean

Dieses Beispiel hat auch bei mir funktioniert und ist mehr als 7x schneller (60 Sekunden) als bei OpenBLAS mit 8 CPU-Kernen (450 Sekunden)!

./examples/mnist/train_lenet.sh
Adrian L.
quelle
Vielen Dank für Ihren Hinweis, dass CUDA Driver v8.0 die Rechenfunktion 2.x unterstützt. Es wird meinen alten GPUs (9600 und 410M) ein zweites Leben geben.
18.
2

Ich hatte dieses Problem auch auf meinem Jetson TX2, als ich NVcaffe installierte (läuft make -j4).

Die Anweisungen im NVIDIA Jetson Forum hier sagen, um zu ersetzen:

-gencode arch=compute_61,code=sm_61

mit

-gencode arch=compute_62,code=sm_62

in makefile.config. Diese Zeile befand sich jedoch nicht in meiner Konfigurationsdatei, da ich gemäß den Anweisungen caffe-0.15 gezogen habe, das diese Zeile nicht enthält. Am Ende hat es für mich also funktioniert, Folgendes in meiner Konfigurationsdatei zu ersetzen:

CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
        -gencode arch=compute_20,code=sm_21 \
        -gencode arch=compute_30,code=sm_30 \
        -gencode arch=compute_35,code=sm_35 \
        -gencode arch=compute_50,code=sm_50 \
        -gencode arch=compute_50,code=compute_50

mit

CUDA_ARCH := -gencode arch=compute_50,code=sm_50 \
        -gencode arch=compute_52,code=sm_52 \
        -gencode arch=compute_60,code=sm_60 \
        -gencode arch=compute_62,code=sm_62 \
        -gencode arch=compute_61,code=compute_61
DankMasterDan
quelle