2016-09-02 10 views
4

GPUをサポートしているUbuntu 16.04でDarknetをコンパイルしています。 Nvidialツールキットのバージョン8.0 RCUbuntu 16.04、Nvidiaツールキット8.0 RC、ダークネットコンパイルエラー: ";"

そして、私はエラーで立ち往生:

template<> __device__ __cudart_builtin__ char surf1Dread(surface<void, cudaSurfaceType1D> surf, int x, enum cudaSurfaceBoundaryMode mode) asm("__surf1Dread_char") ; 
:エラーラインで

nvcc --gpu-architecture=compute_52 --gpu-code=compute_52 -DOPENCV `pkg-config --cflags opencv` -DGPU -I/usr/local/cuda/include/ --compiler-options "-Wall -Wfatal-errors -Ofast -DOPENCV -DGPU" -c ./src/convolutional_kernels.cu -o obj/convolutional_kernels.o 
/usr/local/cuda/include/surface_functions.h(134): error: expected a ";" 

/usr/local/cuda/include/surface_functions.h(135): error: expected a ";" 

/usr/local/cuda/include/surface_functions.h(136): error: expected a ";" 

/usr/local/cuda/include/surface_functions.hはこのような何かを持っています

アドバイスはありますか?

+0

私はOpenCVを使用しないCUDA 8RCの設定をしています。私はダークネットマスターをダウンロードしました。このコマンドは次のとおりです: 'nvcc --gpu-architecture = compute_52 --gpu-code = compute_52 -DGPU -I/usr/local/cuda/include/--compiler-options" -Wall -Wfatal-errors -Ofast -DGPU " c ./src/convolutional_kernels.cu -o obj/convolutional_kernels.o'はエラーなしで実行されます。 –

+0

nvidia-cuda-toolkitのバージョンは何ですか? –

+0

私はCUDA 8RCを使用しました。 'nvcc --version'は次のように報告しています:' CUDAコンパイルツール、リリース8.0、V8.0.26' –

答えて

4

このエラーが原因NVCCバージョン7.5

でのdebファイルを経由して8.0 RCのインストールは、私がインストールさcuda_8.0.27_linux.run経由でCUDAを再インストールして、それが私の作品NVCCバージョン8 を持っていないのCUDAツールキットのように見えるさ今

+0

上記の答えは、どのバージョンのCUDAでも一般化されています。環境にインストール先を知らせる必要があります。 CUDA 9.0の例: 'export PATH =/usr/local/cuda-9.0/bin $ {PATH:+:$ {PATH}}; export LD_LIBRARY_PATH =/usr/local/cuda9.0/lib64 $ {LD_LIBRARY_PATH:+:$ {LD_LIBRARY_PATH}} ' –

7

あなたはCUDAのいくつかのバージョンがインストールされていると(私のような)、それらを必要とする場合、私はあなた(BASH)に以下を追加することをお勧めRC:

# DARKNET 
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}} 
export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} 

ソースあなたのRC(」〜/ .bashrcに。 ')と複雑な作業!

+0

これは質問と何が関係していますか? – talonmies

+2

これは私の問題を解決しました。 cudaドライバ8.0は、ubuntu repoのnvidia-cuda-dev/nvidia-cuda-toolkitのnvccバージョン7.5と競合していました。明示的にこれらのパスを設定し、 'make'を再実行すると、8.0に対してすべてが正しく構築されました。注:私はダークネットを構築していない、Googleから来たが、同様の問題。 – emkman

+0

@talonmiesこれは、OPによって尋ねられたコンパイルエラーの質問に直接答えるものです。この特定のケースでは、PATHとLD_LIBRARY_PATHを拡張することで問題が解決されます。 –

2

だから、あなたの環境がNVCCの異なるバージョンを使用する場合バイナリおよびCUDA は、コンパイル処理中にファイルが含まれて起こります。

ダークネットを使用しているは/ usr/local/CUDA /含まそのパス を含むが、NVCCバイナリを実行したときにPATH relysとして/。それはシステム内のあなたの別のインストールに属している可能性があります。

これを避けるには、シェルが/ usr/local/cuda/bin/nvccのnvccを強制的に検索するようにします。

これはMakefileでNVCCパスをハッキングのいずれかによって行うことができる:

がで NVCC = NVCC を交換 NVCC =は/ usr/local/CUDA/NVCC

またはmodyfyingパスで/ binにmakeコマンドの変数(より簡単でセッションに関連する)

PATH=/usr/local/cuda/bin:$PATH make 
関連する問題