Làm thế nào để xác minh cài đặt CuDNN?


144

Tôi đã tìm kiếm nhiều nơi nhưng TẤT CẢ tôi nhận được là CÁCH cài đặt nó, không phải cách xác minh rằng nó đã được cài đặt. Tôi có thể xác minh trình điều khiển NVIDIA của mình đã được cài đặt và CUDA đã được cài đặt, nhưng tôi không biết cách xác minh CuDNN đã được cài đặt. Giúp đỡ sẽ được nhiều đánh giá cao, cảm ơn!

Tái bút
Điều này là để thực hiện caffe. Hiện tại mọi thứ đang hoạt động mà không kích hoạt CuDNN.


1
bạn đã thử chạy một số ví dụ có và không USE_CUDNNkích hoạt chưa?
pQB

Làm thế nào để bạn xác minh rằng trình điều khiển NVIDIA và CUDA của bạn đã được cài đặt?
Charlie Parker

Câu trả lời:


43

Cài đặt CuDNN chỉ cần đặt các tệp trong thư mục CUDA. Nếu bạn đã chỉ định chính xác các tuyến đường và tùy chọn CuDNN trong khi cài đặt caffe, nó sẽ được biên dịch bằng CuDNN.

Bạn có thể kiểm tra bằng cách sử dụng cmake. Tạo một thư mục caffe/buildvà chạy cmake ..từ đó. Nếu cấu hình đúng, bạn sẽ thấy các dòng sau:

-- 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

Nếu mọi thứ đều chính xác, chỉ cần chạy các makelệnh để cài đặt caffe từ đó.


Tuyệt vời, cảm ơn bạn đã trả lời. Tôi đã kích hoạt cuDNN sau khi kích hoạt nó trong tệp tạo và biên dịch lại nó hoạt động: D.
alfredox 16/07/2015

72
Có cách nào để tìm nếu cuDNN được cài đặt mà không sử dụng Caffe. Một cái gì đó giống như các ví dụ bạn nhận được với CUDA?
gokul_uf

6
@gokul_uf mỗi câu trả lời của martin bên dưới, bạn có thể sử dụng các câu hỏi sau (giả sử bạn đã liên kết / usr / local / cuda đến /usr/local/cuda-#.#):cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
matt

2
@Boooooooooms Anh ấy chỉ đơn giản là lấy nội dung của "tệp tiêu đề" cho ngôn ngữ lập trình C và sử dụng chương trình "grep" để đọc ra một biến cụ thể cho chúng tôi
Greg Hilston

Tôi không có Caffe.
rjurney

167

Việc cài đặt CuDNN chỉ là sao chép một số tệp. Do đó để kiểm tra xem CuDNN đã được cài đặt chưa (và bạn có phiên bản nào), bạn chỉ cần kiểm tra các tệp đó.

Cài đặt CuDNN

Bước 1: Đăng ký tài khoản nhà phát triển nvidia và tải xuống cudnn tại đây (khoảng 80 MB). Bạn có thể cần nvcc --versionphải có phiên bản cuda của bạn.

Bước 2: Kiểm tra nơi cài đặt cuda của bạn. Đối với hầu hết mọi người, nó sẽ được /usr/local/cuda/. Bạn có thể kiểm tra nó với which nvcc.

Bước 3: Sao chép các tập tin:

$ 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*

Kiểm tra phiên bản

Bạn có thể phải điều chỉnh đường dẫn. Xem bước 2 của quá trình cài đặt.

$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

Ghi chú

Khi bạn gặp lỗi như

F tensorflow/stream_executor/cuda/cuda_dnn.cc:427] could not set cudnn filter descriptor: CUDNN_STATUS_BAD_PARAM

với TensorFlow, bạn có thể cân nhắc sử dụng CuDNN v4 thay vì v5.

Người dùng Ubuntu đã cài đặt nó quaapt : https://askubfox.com/a/767270/10425


2
Các bước cho CuDNN là tốt. Bạn có nói rằng chúng có thể được cải thiện một chút nếu các bản sao được giữ liên kết tượng trưng (cờ -av) không?
auro

8
Sửa đổi đường dẫn hơi hoạt động cho cài đặt của tôicat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
Micah Stubbs

Tôi đã phải thay đổi con đường của mình thành/usr/local/cuda/**/*.h
bwest87

Liên kết bạn đã đăng để tải liên kết cudnn đến các tệp deb. Đây là nơi bạn có thể tải xuống các tệp tar: developer.nvidia.com/rdp/cudnn-archive
BourbonCreams

Gần đây, để có được phiên bản, các công việc sau đây. mèo /usr/include/x86_64-linux-gnu/cudnn_v7.h | grep CUDNN_MAJOR -A 2
auro

106

Trước tiên bạn cần tìm tệp cudnn đã cài đặt và sau đó phân tích tệp này. Để tìm tệp, bạn có thể sử dụng:

whereis cudnn.h
CUDNN_H_PATH=$(whereis cudnn.h)

Nếu điều đó không hiệu quả, hãy xem "Redhat phân phối" bên dưới.

Khi bạn tìm thấy vị trí này, bạn có thể thực hiện các thao tác sau (thay thế ${CUDNN_H_PATH}bằng đường dẫn):

cat ${CUDNN_H_PATH} | grep CUDNN_MAJOR -A 2

Kết quả sẽ trông giống như thế này:

#define CUDNN_MAJOR 7
#define CUDNN_MINOR 5
#define CUDNN_PATCHLEVEL 0
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

Có nghĩa là phiên bản là 7.5.0.

Ubuntu 18.04 (thông qua sudo apt cài đặt nvidia-cuda-toolkit)

Phương pháp cài đặt này cài đặt cuda trong / usr / include và / usr / lib / cuda / lib64, do đó tệp bạn cần xem là trong /usr/include/cudnn.h.

CUDNN_H_PATH=/usr/include/cudnn.h
cat ${CUDNN_H_PATH} | grep CUDNN_MAJOR -A 2

Debian và Ubuntu

Từ CuDNN v5 trở đi (ít nhất là khi bạn cài đặt qua sudo dpkg -i <library_name>.debcác gói), có vẻ như bạn có thể cần phải sử dụng như sau:

cat /usr/include/x86_64-linux-gnu/cudnn_v*.h | grep CUDNN_MAJOR -A 2

Ví dụ:

$ 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"

cho biết CuDNN phiên bản 6.0.21 đã được cài đặt.

Phân phối lại

Trên CentOS, tôi tìm thấy vị trí của CUDA với:

$ whereis cuda
cuda: /usr/local/cuda

Sau đó, tôi đã sử dụng quy trình về tệp cudnn.h mà tôi tìm thấy từ vị trí này:

$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

47

Để kiểm tra cài đặt CUDA, hãy chạy lệnh bên dưới , nếu nó được cài đặt đúng thì lệnh bên dưới sẽ không gây ra bất kỳ lỗi nào và sẽ in đúng phiên bản thư viện.

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

Để kiểm tra cài đặt CuDNN, hãy chạy bên dưới lệnh , nếu CuDNN được cài đặt đúng thì bạn sẽ không gặp bất kỳ lỗi nào.

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 

HOẶC LÀ

bạn có thể chạy lệnh dưới đây từ bất kỳ thư mục

nvcc -V

nó sẽ cung cấp đầu ra như thế này

 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

Tôi chạy lệnh nvcc -V và nó đã ném lỗi. lệnh như vậy không tìm thấy.
Vòng lặp vô hạn

@InfiniteLoops bạn đã cài đặt bộ công cụ nvidia cuda chưa?
Sherlock

@Sherlock tôi trực tiếp chạy cmd từ hướng dẫn cài đặt của TensorFlow, mà tôi giả sử cài đặt Cuda n cudnn. Nó nói rằng nó thêm repo gói Nvidia và Cài đặt cuda và các công cụ. Nhưng chức năng bạn đã nêu trước đó hoạt động. Nó hiển thị một cái gì đó như libcudnn.so.7 -> libcudnn.so.7.2.1
Vòng lặp vô hạn

@InfiniteLoops nếu bạn gặp lỗi "không tìm thấy lệnh đó" có nghĩa là bộ công cụ nvidia chưa được cài đặt. thử lệnh nvccvà kiểm tra đầu ra của bạn. kiểm tra bên dưới liên kết cũng devtalk.nvidia.com/default/topic/457664/ trên
Sherlock

32

Nhận phiên bản cuDNN [Linux]

Sử dụng sau đây để tìm đường dẫn cho cuDNN:

cat $(whereis cudnn.h) | grep CUDNN_MAJOR -A 2

Nếu ở trên không hoạt động, hãy thử điều này:

cat $(whereis cuda)/include/cudnn.h | grep CUDNN_MAJOR -A 2

Bắt phiên bản cuDNN [Windows]

Sử dụng sau đây để tìm đường dẫn cho cuDNN:

C:\>where cudnn*
C:\Program Files\cuDNN6\cuda\bin\cudnn64_6.dll

Sau đó sử dụng để đổ phiên bản từ tệp tiêu đề,

type "%PROGRAMFILES%\cuDNN6\cuda\include\cudnn.h" | findstr "CUDNN_MAJOR CUDNN_MINOR CUDNN_PATCHLEVEL"

Bắt phiên bản CUDA

Điều này hoạt động trên Linux cũng như Windows:

nvcc --version

1
Chỉ cần thêm trường hợp người dùng: Tôi không thể tìm thấy cudnn.htệp trong cài đặt cuda của mình và tôi nghĩ rằng tôi chưa cài đặt cudnn. Nhưng sau đó tôi đã chạy mã mẫu cuda được tải xuống từ trang web chính thức và nó đã vượt qua ...
yuqli

2
Lệnh đầy đủ tôi sử dụng để tìm số phiên bản đầy đủ là:type "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include\cudnn.h" | findstr "CUDNN_MAJOR CUDNN_MINOR CUDNN_PATCHLEVEL"
Taran

Mát mẻ! Tôi cập nhật câu trả lời để bây giờ nó in những chi tiết này.
Shital Shah

16

Khi cài đặt trên Ubuntu thông qua .debbạn có thể sử dụngsudo apt search cudnn | grep installed


6

Chạy ./mnistCUDNNvào/usr/src/cudnn_samples_v7/mnistCUDNN

Đây là một ví dụ:

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

4
Đây thực sự là lời khuyên không tồi, ngoại trừ nơi nó sai. mnistCUDNNkhông nên ở trong thư mục đó vì đó không phải là một thư mục có thể ghi. Thay vào đó, các mẫu nên được sao chép như một thư mục con vào thư mục chính của người dùng và được xây dựng ở đó. Vì vậy, nếu nó được cài đặt và xây dựng đúng theo hướng dẫn trên trang web của Nvidia, mnistCUDNN sẽ có trong~/cudnn_samples_v7
Mike Wise

Chỉ cần thêm bạn có thể lấy mẫu mã từ trang web chính thức của NVIDIA, làm theo các hướng dẫn tại đây ( docs.nvidia.com/deeplearning/sdk/cudnn-install/ù ) để biết cách cài đặt và xác minh.
yuqli

1
Tôi hiểu rồi. My cudnn.hđã được cài đặt tại /usr/include/cudnn.h, không chắc tại sao nhưng điều này cũng xảy ra trước đây khi tôi cài đặt CUDA apt-get. Lần này tôi đang sử dụng dpkgvà không thay đổi gì cả ...
yuqli 27/11/18
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.