回答:
CuDNNをインストールするには、ファイルをCUDAディレクトリに配置するだけです。caffeのインストール中にルートとCuDNNオプションを正しく指定した場合、CuDNNでコンパイルされます。
これはを使用して確認できcmake
ます。ディレクトリcaffe/build
を作成し、cmake ..
そこから実行します。構成が正しい場合は、次の行が表示されます。
-- Found cuDNN (include: /usr/local/cuda-7.0/include, library: /usr/local/cuda-7.0/lib64/libcudnn.so)
-- NVIDIA CUDA:
-- Target GPU(s) : Auto
-- GPU arch(s) : sm_30
-- cuDNN : Yes
すべてが正しい場合はmake
、そこからカフェをインストールするように命令を実行します。
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
CuDNNのインストールは、いくつかのファイルをコピーしているだけです。したがって、CuDNNがインストールされているかどうか(および使用しているバージョン)を確認するには、これらのファイルを確認するだけで済みます。
ステップ1:nvidia開発者アカウントを登録し、ここからcudnnをダウンロードします(約80 MB)。nvcc --version
cudaバージョンを取得する必要がある場合があります。
ステップ2:cudaのインストール場所を確認します。ほとんどの人にとって、それはです/usr/local/cuda/
。で確認できwhich nvcc
ます。
ステップ3:ファイルをコピーします。
$ cd folder/extracted/contents
$ sudo cp include/cudnn.h /usr/local/cuda/include
$ sudo cp lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
パスを調整する必要があるかもしれません。インストールのステップ2を参照してください。
$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
次のようなエラーが発生した場合
F tensorflow/stream_executor/cuda/cuda_dnn.cc:427] could not set cudnn filter descriptor: CUDNN_STATUS_BAD_PARAM
TensorFlowでは、v5ではなくCuDNN v4の使用を検討する場合があります。
経由でインストールしたUbuntuユーザーapt
:https : //askubuntu.com/a/767270/10425
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
/usr/local/cuda/**/*.h
まず、インストールされているcudnnファイルを見つけてから、このファイルを解析する必要があります。ファイルを見つけるには、以下を使用できます。
whereis cudnn.h
CUDNN_H_PATH=$(whereis cudnn.h)
それが機能しない場合は、以下の「Redhatディストリビューション」を参照してください。
この場所が見つかったら、次の操作を実行できます(${CUDNN_H_PATH}
パスに置き換えます)。
cat ${CUDNN_H_PATH} | grep CUDNN_MAJOR -A 2
結果は次のようになります。
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 5
#define CUDNN_PATCHLEVEL 0
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
つまり、バージョンは7.5.0です。
このインストール方法では、cudaが/ usr / includeおよび/ usr / lib / cuda / lib64にインストールされます。したがって、確認する必要があるファイルは/usr/include/cudnn.hにあります。
CUDNN_H_PATH=/usr/include/cudnn.h
cat ${CUDNN_H_PATH} | grep CUDNN_MAJOR -A 2
CuDNN v5以降(少なくともsudo dpkg -i <library_name>.deb
パッケージを介してインストールする場合)では、以下を使用する必要があるようです。
cat /usr/include/x86_64-linux-gnu/cudnn_v*.h | grep CUDNN_MAJOR -A 2
例えば:
$ cat /usr/include/x86_64-linux-gnu/cudnn_v*.h | grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 6
#define CUDNN_MINOR 0
#define CUDNN_PATCHLEVEL 21
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
#include "driver_types.h"
CuDNNバージョン6.0.21がインストールされていることを示します。
CentOSで、私はCUDAの場所を見つけました:
$ whereis cuda
cuda: /usr/local/cuda
次に、この場所から見つけたcudnn.hファイルについての手順を使用しました。
$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
CUDAのインストールを確認するには、以下のコマンドを実行します。正しくインストールされている場合、以下のコマンドはエラーをスローせず、正しいバージョンのライブラリを出力します。
function lib_installed() { /sbin/ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep $1; }
function check() { lib_installed $1 && echo "$1 is installed" || echo "ERROR: $1 is NOT installed"; }
check libcuda
check libcudart
CuDNNのインストールを確認するには、以下のコマンドを実行します。CuDNNが正しくインストールされていれば、エラーは発生しません。
function lib_installed() { /sbin/ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep $1; }
function check() { lib_installed $1 && echo "$1 is installed" || echo "ERROR: $1 is NOT installed"; }
check libcudnn
または
以下のコマンドを任意のディレクトリから実行できます
nvcc -V
それはこのような出力を与えるはずです
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Tue_Jan_10_13:22:03_CST_2017
Cuda compilation tools, release 8.0, V8.0.61
nvcc
を試して、出力を確認してください。以下のリンクも確認してくださいdevtalk.nvidia.com/default/topic/457664/…–
cuDNNバージョンの取得[Linux]
以下を使用してcuDNNのパスを見つけます。
cat $(whereis cudnn.h) | grep CUDNN_MAJOR -A 2
上記がうまくいかない場合は、これを試してください:
cat $(whereis cuda)/include/cudnn.h | grep CUDNN_MAJOR -A 2
cuDNNバージョンの取得[Windows]
以下を使用してcuDNNのパスを見つけます。
C:\>where cudnn*
C:\Program Files\cuDNN6\cuda\bin\cudnn64_6.dll
次に、これを使用してヘッダーファイルからバージョンをダンプします。
type "%PROGRAMFILES%\cuDNN6\cuda\include\cudnn.h" | findstr "CUDNN_MAJOR CUDNN_MINOR CUDNN_PATCHLEVEL"
CUDAバージョンの取得
これはLinuxとWindowsで機能します。
nvcc --version
cudnn.h
cudaインストールでファイルが見つからず、cudnnがインストールされていないと思いました。しかし、後で公式Webサイトからダウンロードしたcudaサンプルコードを実行すると、合格しました...
type "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include\cudnn.h" | findstr "CUDNN_MAJOR CUDNN_MINOR CUDNN_PATCHLEVEL"
ファイル名を指定して実行./mnistCUDNN
で/usr/src/cudnn_samples_v7/mnistCUDNN
次に例を示します。
cudnnGetVersion() : 7005 , CUDNN_VERSION from cudnn.h : 7005 (7.0.5)
Host compiler version : GCC 5.4.0
There are 1 CUDA capable devices on your machine :
device 0 : sms 30 Capabilities 6.1, SmClock 1645.0 Mhz, MemSize (Mb) 24446, MemClock 4513.0 Mhz, Ecc=0, boardGroupID=0
Using device 0
mnistCUDNN
これは書き込み可能なディレクトリではないため、そのディレクトリには配置しないでください。むしろ、サンプルはサブディレクトリとしてユーザーのホームディレクトリにコピーされ、そこでビルドされているはずです。それが適切にNvidiaのサイトの指示に従ってインストールして構築されたのであれば、 mnistCUDNN
になります~/cudnn_samples_v7
cudnn.h
はにインストールされましたが/usr/include/cudnn.h
、理由はわかりませんが、CUDAをインストールする前にこれが発生しapt-get
ました。今回は使用dpkg
していて何も変更しませんでした...
USE_CUDNN
有効にして、または有効にせずにいくつかの例を実行してみましたか?