Caffe: nvcc fatal:サポートされていないgpuアーキテクチャ 'compute_61'

作成日 2016年12月31日  ·  27コメント  ·  ソース: BVLC/caffe

問題の概要

以下の構成がありますが、コンパイルの開始時に、すべてのgpuモジュールに対してエラーがスローされます。

nvcc fatal:サポートされていないgpuアーキテクチャ 'compute_61'

なぜそうなのですか? 新しいGeforce1070 / 1080カードのマスターブランチで7.5はサポートされていませんか?

システム構成

オペレーティング・システム:
コンパイラ:GCC 4.8.4
CUDAバージョン(該当する場合):7.5
CUDNNバージョン(該当する場合):5.0
BLAS:
PythonまたはMATLABバージョン(それぞれpycaffeおよびmatcaffe用):

最も参考になるコメント

Makefile.configを変更する必要があります。

\# CUDA architecture setting: going with all of them.
\# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility.
\# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility.
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

全てのコメント27件

CUDA 7.5は古いため、「compute_61」をサポートしていない可能性があります。
CUDA8.0またはMake.configで「compute_50」を選択することが解決策になるかもしれません。

CUDA8.0 + Geforce1070を問題なく使用しています。

ええ..リリースブランチがあるといいのですが..マスターブランチの代わりに、新しいopencvやcudaなどのリリースで壊れてしまうかもしれません。

Makefile.configを変更する必要があります。

\# CUDA architecture setting: going with all of them.
\# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility.
\# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility.
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

cmakeを使用している場合は、CUDA_ARCH_NAMEを探します。 アーチがリストされていない場合は、「手動」に設定できます。 構成後、CUDA_ARCH_BINとCUDA_ARCH_PTXが使用可能になります。

私にとって、バニラファイルにはcompute_60がまったくありませんでした。

# CUDA architecture setting: going with all of them.
# For CUDA < 6.0, comment the *_50 lines for compatibility.
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

それでも私は得ます:
nvcc fatal : Unsupported gpu architecture 'compute_60'

誰か他に何を試すことができるか考えていますか?

私はあなたと同じ問題を抱えています、あなたはもうそれを解決しましたか? @ハックスウェル

私はgtx1070またはgtx1080を搭載したマシンでのみ動作します。
CUDA_ARCHが指定されていても、titan x、gtx 770、cpuの可能性はありません。
私はまだ理由を理解するのに苦労しています。

コメントした後でも、ビルド中に、このエラーはcuDNN5.0を使用するCUDA7.0でポップアップします。 Ubuntu14.04で
これに対する解決策はありますか

私だけに関係するかもしれませんが、別のリポジトリのnvidia-docker dockerfileを使用している可能性がある場合は、編集したMakefile.configファイルを実際に使用しているかどうかを再確認してください。デフォルトのファイルは、によって自動的に名前が変更されます。 Dockerの構築プロセス中にgithubからダウンロードされたスクリプトまたはファイル。

caffe github Webサイトからcaffeバージョンをダウンロードし、CUDA7.0とcuDNN5.0を使用してMakefile.configを変更しました。

mv makefile.config.example makefile.configの標準的な手順に従って変更を加え、ビルドディレクトリを使用してビルドしました。

私は次のようにしてこの問題を解決します:
cd / usr / local / lib
sudo rm cuda
sudo ln -s cuda-8.0 / cuda

こんにちは、みんな、

Ubuntu16.04でCUDA9.0を使用していますが、次のエラーが発生します。

nvcc fatal   : Unsupported gpu architecture 'compute_20'

これは、Makefile.configの行を削除することで解決できます。

-gencode arch=compute_20,code=sm_20 \
 -gencode arch=compute_20,code=sm_21 \

一番、
クリス

Makefile.configはどこにありますか? 同じ問題がありますが、編集するこのアーカイブが見つかりません。

どちらも見つかりません。

つまり..カフェは今死んでいるようなものです。 誰もが今TFに作品を公開しています

chriskraus0で言う:
これは、Makefile.configの行を削除することで解決できます。

-gencode arch = compute_20、code = sm_20 \
-gencode arch = compute_20、code = sm_21 \

しかし、編集するMakefile.configが見つかりません。 どうすれば編集できますか? このアーカイブを作成する必要があります。 わかりません、私は初心者です。

こんにちは、

ファイルはcaffeのベースフォルダーにあるか、Makefile.config.exampleをコピー/名前変更して作成する必要があります。

インストール手順(http://caffe.berkeleyvision.org/installation.html#compilation)をご覧ください。

幸運をお祈りしています、
クリス

どうもありがとう!

cmakeを使用してカフェを構築する、CUDA 8、cuDNN V7、1070 Ti
cmakeを使用すると、cuda 8.0がインストールされていても、cuda7.5が表示されます。

"[1%]ターゲットカフェプロトを構築
[2%] NVCC(デバイス)オブジェクトの構築src / caffe / CMakeFiles / cuda_compile.dir / layers / cuda_compile_generated_prelu_layer.cu.o
nvcc fatal:サポートされていないgpuアーキテクチャ 'compute_61'
cuda_compile_generated_prelu_layer.cu.oでのCMakeエラー。 cmake:207 (メッセージ):
エラーの生成
/home/stanley/caffe/build/src/caffe/CMakeFiles/cuda_compile.dir/layers/./cuda_compile_generated_prelu_layer.cu.o

src / caffe / CMakeFiles / caffe.dir / build。 make:483 :ターゲット 'src / caffe / CMakeFiles / cuda_compile.dir / layers /cuda_compile_generated_prelu_layer.cu.o'のレシピが失敗しました
make [2]: * [src / caffe / CMakeFiles / cuda_compile.dir / layers /cuda_compile_generated_prelu_layer.cu.o]エラー1CMakeFiles / Makefile2:304:ターゲット 'src / caffe / CMakeFiles / caffe.dir / all'のレシピが失敗しましたmake [1]: [src / caffe / CMakeFiles / caffe.dir / all]エラー2
Makefile:127 :ターゲット 'all'のレシピが失敗しました
make:** [すべて]エラー2
「」

助けてください

私も同様の問題を抱えています。 DockerイメージにCaffeをインストールしようとしています。 GazeAnalysisのコードを試すためにそうしています。 Ubunut14でCuda7.5とCuDNN5を使用しています。これらを使用するようにこのリポジトリのGPUDokerfileを変更しました。 提案されているように、私はこれらの行を_Makefile.config_から削除しました。

-gencode arch=compute_60,code=sm_60 \
-gencode arch=compute_61,code=sm_61 \
-gencode arch=compute_61,code=compute_61

また、使用しているNCCVのバージョンがCudaおよびCuDNNバージョンと互換性があることを確認しました。 ただし、プロセスがmake -j"$(nproc)"を実行するようになると、次のようになります。

-- Build files have been written to: /opt/caffe/build
[  1%] Running C++/Python protocol buffer compiler on /opt/caffe/src/caffe/proto/caffe.proto
Scanning dependencies of target proto
[  1%] Building CXX object src/caffe/CMakeFiles/proto.dir/__/__/include/caffe/proto/caffe.pb.cc.o
Linking CXX static library ../../lib/libproto.a
[  1%] Built target proto
[  2%] [  2%] [  2%] [  2%] [  2%] [  4%] [  4%] Building NVCC (Device) object src/caffe/CMakeFiles/cuda_compile.dir/util/./cuda_compile_generated_math_functions.cu.o
Building NVCC (Device) object src/caffe/CMakeFiles/cuda_compile.dir/solvers/./cuda_compile_generated_adagrad_solver.cu.o
Building NVCC (Device) object src/caffe/CMakeFiles/cuda_compile.dir/solvers/./cuda_compile_generated_sgd_solver.cu.o
Building NVCC (Device) object src/caffe/CMakeFiles/cuda_compile.dir/solvers/./cuda_compile_generated_rmsprop_solver.cu.o
Building NVCC (Device) object src/caffe/CMakeFiles/cuda_compile.dir/solvers/./cuda_compile_generated_adadelta_solver.cu.o
Building NVCC (Device) object src/caffe/CMakeFiles/cuda_compile.dir/solvers/./cuda_compile_generated_nesterov_solver.cu.o
[  4%] Building NVCC (Device) object src/caffe/CMakeFiles/cuda_compile.dir/solvers/./cuda_compile_generated_adam_solver.cu.o
Building NVCC (Device) object src/caffe/CMakeFiles/cuda_compile.dir/layers/./cuda_compile_generated_contrastive_loss_layer.cu.o
nvcc fatal   : Unsupported gpu architecture 'compute_60'
nvcc fatal   : Unsupported gpu architecture 'compute_60'
CMake Error at cuda_compile_generated_adadelta_solver.cu.o.cmake:206 (message):
  Error generating
  /opt/caffe/build/src/caffe/CMakeFiles/cuda_compile.dir/solvers/./cuda_compile_generated_adadelta_solver.cu.o

cmake -DUSE_CUDNN=1 -DUSE_NCCL=1 ..はある時点でこれを出力するので、これは合理的です。

-- NVIDIA CUDA:
--   Target GPU(s)     :   Auto
--   GPU arch(s)       :   sm_20 sm_21 sm_30 sm_35 sm_50 sm_60 sm_61
--   cuDNN             :   Yes (ver. 5.1.10)

これは、 sm_52がファイルに表示されている間はここに表示されないため、 nvidia-docker run --rm -it --entrypoint /bin/bash caffe_imageで実行し、次のコマンドを手動で実行しました。

cd /opt/caffe/
mkdir build
cd build
cmake -DUSE_CUDNN=1 -DUSE_NCCL=1 ..

この設定では、出力は次のとおりです。

-- NVIDIA CUDA:
--   Target GPU(s)     :   Auto
--   GPU arch(s)       :   sm_50
--   cuDNN             :   Yes (ver. 5.1.10)

アーキテクチャがサポートされているため、これは問題なく終了し、 make -j"$(nproc)"も問題なく終了します。 ただし、残りのGPUアーキテクチャではこれを適切にコンパイルできません。

誰が何が起こっているのかについて何か考えがありますか? または、これをどのように解決できますか?
参考までに、使用しているDockerfileとMakefile.configの変更バージョンをここに残しまし

前もって感謝します。

@javierselva Makefileでコンパイルしていないようですが、CMakeを使用しています。 その場合、これは別のビルドシステムであり、cmake-guiのようなものでGPUアーチを削除/変更する必要があります。
CmakeはMakefile.configを読み取りません。これは、Caffe(別のビルドシステム)のルートディレクトリで「make」を実行した場合にのみ使用されます。

素晴らしい! どうもありがとうございました、 @ naibaf7 、私はものをコンパイルするのに少し慣れていません、そして私はまだMakeとCMakeの違いに混乱しています。 将来の問題のためにそれを研究します。

だからあなたの応答に続いて、私はcmake / Cuda.cmakeファイルを変更し、7行目と92:93行目のアーキテクチャ60と61を削除しました。 今ではすべてが完全に機能しているようです。

再度、感謝します!!

@Noiredd @javierselvaが報告しているような問題のため、Makefileビルドシステムを放棄する時が来たと思います。 どう思いますか?

@ naibaf7主に、make / cmakeの経験が限られているため、明確な意見はありません。 それでも、単一のビルドシステムを使用すると、障害ポイントが制限される可能性が高いため、実行することをお勧めします。

@Noiredd少なくともOpenCLブランチでは、Makefileインフラストラクチャが
Makefileは、すべての依存関係パスを取得するのに十分なほど強力ではなく、多くの場合、多くの手作業が必要になります。

Windowsの場合?

@prehensilecode
あなたの説明についてはよくわかりません: CUDA_ARCH_NAME。
CUDA_ARCHをarch=compute_50,code=sm_50に設定するにはどうすればよいですか。

あなたのお返事を楽しみにしております。

このページは役に立ちましたか?
0 / 5 - 0 評価