Làm cách nào để cài đặt CUDA Toolkit 7/8/9 trên Debian 8 (Jessie) hoặc 9 (Stretch)?


26

Làm cách nào để cài đặt Cuda Toolkit 7.0 hoặc 8 trên Debian 8?

Tôi biết rằng Debian 8 đi kèm với tùy chọn tải xuống và cài đặt CUDA Toolkit 6.0 bằng cách sử dụng apt-get install nvidia-cuda-toolkit, nhưng làm thế nào để bạn làm điều này cho bộ công cụ CUDA phiên bản 7.0 hoặc 8?

Tôi đã thử cài đặt bằng trình cài đặt Ubuntu, như được mô tả dưới đây:

sudo wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_7.0-28_amd64.deb

dpkg -i cuda-repo-ubuntu1404_7.0-28_amd64.deb

sudo apt-get update

sudo apt-get install -y cuda

Tuy nhiên, nó không hoạt động và thông báo sau đã được trả lại:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 cuda : Depends: cuda-7-0 (= 7.0-28) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

@nullgeppetto: Vui lòng thử làm theo các hướng dẫn trong câu trả lời của tôi dưới đây :-)
einpoklum - phục hồi Monica

Câu trả lời:


30

Các hướng dẫn sau đây hợp lệ cho CUDA 7.0, 7.5 và một số phiên bản trước (và có thể sau này). Theo như bản phân phối Debian, chúng hợp lệ cho Jessie và Stretch và có thể là các phiên bản khác. Họ giả định kiến ​​trúc amd64 (x86_64), nhưng bạn có thể dễ dàng điều chỉnh chúng cho x86 (x86_32).

Điều kiện tiên quyết lắp đặt

  • g ++ - Bạn nên sử dụng phiên bản GCC mới nhất được hỗ trợ bởi phiên bản CUDA của bạn. Đối với CUDA 7.x, đây sẽ là phiên bản 4.9.3, cuối cùng của dòng 4.x; đối với CUDA 8.0, các phiên bản GCC 5.x được hỗ trợ. Nếu phân phối của bạn sử dụng GCC 5.x theo mặc định, hãy sử dụng điều đó, nếu không thì GCC 5.4.0 sẽ làm. Các phiên bản trước có thể sử dụng được nhưng tôi sẽ không đề xuất chúng, nếu chỉ để hỗ trợ tính năng C ++ hiện đại tốt hơn cho mã phía máy chủ.
  • gcc - đi kèm với g ++. Tôi thậm chí nghĩ rằng CMake có thể mặc định có nvcc gọi gcc thay vì g ++ trong một số trường hợp có -xchuyển đổi (nhưng không chắc chắn về điều này).
  • libGLU - Thư viện Mesa OpenGL (+ tệp phát triển?)
  • libXi - Thư viện tiện ích mở rộng Hệ thống X Window (+ tệp phát triển?)
  • libXmu - Thư viện "tiện ích linh tinh" của Hệ thống X Window (+ tệp phát triển?)
  • Linux kernel - tiêu đề cho phiên bản kernel bạn đang chạy.

Nếu bạn muốn có một danh sách các gói cụ thể, điều đó phụ thuộc vào chính xác phân phối nào, nhưng hãy thử các cách sau (đối với CUDA 7.x):

sudo apt-get install gcc g++ gcc-4.9 g++-4.9 libxi libxi6 libxi-dev libglu1-mesa libglu1-mesa-dev libxmu6 libxmu6-dev linux-headers-amd64 linux-source

Và bạn có thể thêm một số -dbgphiên bản của các gói đó để gỡ lỗi biểu tượng.

Tôi khá chắc chắn rằng điều này bao gồm tất cả - nhưng tôi có thể đã bỏ lỡ thứ gì đó mà tôi vừa cài đặt. Ngoài ra, CUDA có thể hoạt động với tiếng kêu , ít nhất là bằng thực nghiệm, nhưng tôi chưa thử điều đó.

Cài đặt trình điều khiển hạt nhân CUDA

  1. Chuyển đến trang Tải xuống CUDA của NVIDIA .
  2. Chọn Linux> x86_64> Ubuntu , sau đó chọn bất kỳ phiên bản mới nhất nào (tại thời điểm viết: Ubuntu 15.04).
  3. Chọn tùy chọn tệp .run .
  4. Tải xuống tệp .run (hiện tại là tệp này ). Hãy chắc chắn rằng không đặt nó vào /tmp.
  5. Làm cho tập tin .sl thực thi : chmod a+x cuda_7.5.18_linux.run.
  6. Trở thành root.
  7. Thực thi tệp .run: Giả vờ chấp nhận giấy phép thu nhỏ ngớ ngẩn của họ; nói "có" để chỉ cài đặt trình điều khiển hạt nhân NVIDIA và nói "không" với mọi thứ khác.

Việc cài đặt sẽ cho bạn biết nó dự kiến ​​đã cài đặt trình điều khiển hạt nhân NVIDIA, nhưng bạn nên khởi động lại trước khi tiếp tục / thử lại cài đặt bộ công cụ. Vì thế...

  1. Rõ ràng đã thành công, khởi động lại.

Tự cài đặt CUDA

  1. Hãy là người gốc.
  2. Xác định vị trí và thực hiện cuda_7.5.18_linux.run
  3. Lần này, nói Không với cài đặt trình điều khiển, nhưng Có để cài đặt mọi thứ khác và chấp nhận các đường dẫn mặc định (hoặc thay đổi chúng, bất cứ điều gì phù hợp với bạn).

Trình cài đặt có khả năng thất bại . Đó là một điều tốt khi cho rằng đó là loại thất bại mà chúng tôi mong đợi: Nó sẽ cho bạn biết phiên bản trình biên dịch của bạn không được hỗ trợ - CUDA 7.0 hoặc 7.5 hỗ trợ lên đến gcc 4.9 và theo mặc định bạn có phiên bản 5.x. Bây giờ, nếu bạn nhận được thông báo về các thư viện bị thiếu , điều đó có nghĩa là các hướng dẫn của tôi ở trên liên quan đến các điều kiện tiên quyết bằng cách nào đó đã thất bại và bạn nên bình luận ở đây để tôi có thể sửa chúng. Giả sử bạn đã nhận được "thất bại tốt", hãy tiến hành:

  1. Gọi lại tệp .run, lần này với tùy chọn --override.
  2. Thực hiện các lựa chọn tương tự như trong bước 11.

CUDA bây giờ nên được cài đặt, theo mặc định bên dưới /usr/local/cuda(đó là một liên kết tượng trưng). Nhưng chúng ta chưa xong!

Chỉ đạo trình biên dịch nvcc của NVIDIA sử dụng đúng phiên bản g ++

Trình biên dịch CUDA của NVIDIA thực sự gọi g ++ là một phần của quá trình liên kết và / hoặc để biên dịch C ++ thực tế chứ không phải là các tệp .cu. Tôi nghĩ. Dù sao, nó mặc định chạy bất cứ thứ gì trên đường đi của bạn như g++; Nhưng nếu bạn đặt cái khácg++ bên dưới /usr/local/cuda/bin, nó sẽ sử dụng nó đầu tiên! Vì thế...

  1. Thực thi symlink /usr/bin/g++-4.9 /usr/local/cuda/bin/g++(và cho các biện pháp tốt, cũng có thể symlink /usr/bin/gcc-4.9 /usr/local/cuda/bin/gcc.

Đó là nó.

Đang thử cài đặt

  1. cd /root/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd
  2. make

Bản dựng sẽ kết thúc thành công và khi bạn thực hiện

  1. ./vectorAdd

bạn sẽ nhận được đầu ra sau:

root@mymachine:~/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd# ./vectorAdd
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done

Ghi chú

  • Bạn không cần phải cài đặt NVIDIA GDK (Bộ phát triển GPU), nhưng nó không gây hại và nó có thể hữu ích cho một số người. Cài đặt nó vào thư mục gốc của hệ thống của bạn; nó khá an toàn và có một trình gỡ cài đặt sau đó : /usr/bin/uninstall_gdk.pl. Trong CUDA 8, nó đã được tích hợp vào chính CUDA IIANM.
  • Không cài đặt các gói bổ sung có tên như nvidia -... hoặc cuda ...; họ có thể không đau nhưng chắc chắn họ sẽ không giúp.
  • Trước khi thực hiện bất kỳ điều nào trong số những điều này, bạn có thể muốn đảm bảo rằng GPU của bạn được nhận ra, sử dụng lspci | grep -i nvidia.

... tốt, hầu hết tất cả những điều này: Tất nhiên, bạn không thể cài đặt trình điều khiển kernel nếu bạn không root. Nhưng bạn có thể xây dựng (không chạy) mã CUDA mà không cần nó.
einpoklum - phục hồi Monica

Chỉ cần thử điều này. trình cài đặt cuda chỉ từ chối cài đặt. Nó bảo lãnh với một cảnh báo rằng bạn nên sử dụng tệp .deb.

@WernerVanBelle: Bạn có thể đăng nó dưới dạng một câu hỏi riêng biệt không? Hoặc ít nhất là trích dẫn cảnh báo nếu nó quá ngắn? Ngoài ra, IIRC nó có một số tùy chọn dòng lệnh "bắt buộc", bạn đã thử chưa?
einpoklum - phục hồi Monica

Tất cả điều này - ngoại trừ cài đặt trình điều khiển - cũng có thể được thực hiện với tư cách là người dùng không root trong thư mục chính của bạn, nhưng điều đó chỉ đủ để xây dựng mã CUDA chứ không phải để chạy nó. Bạn cần một trình điều khiển nVIDIA thích hợp trong kernel của mình cho điều đó và chỉ người dùng root mới có thể thực hiện điều đó. Xin lỗi cho nhận xét trước đó của tôi mà đề nghị khác. Ngoài ra, để xây dựng với tư cách là người dùng không root, bạn có thể cần xây dựng phiên bản gcc / g ++ của riêng mình nếu bản phân phối của bạn chỉ có phiên bản mới hơn (đối với CUDA 7.x bạn sẽ cần gcc 4.9.3).
einpoklum - phục hồi Monica

@celavek: nếu bạn nghĩ rằng câu trả lời này không bao gồm Debian 9 đủ tốt, vui lòng giải thích lý do trước khi bạn thực hiện chỉnh sửa được đề xuất.
einpoklum - phục hồi Monica

6

Tôi nghĩ bạn nên làm điều đó bằng cách sử dụng backport, tôi thực sự cài đặt nvidia-cuda-toolkit7.5 trên debian jessie.

Thêm backport, không miễn phí, cho của bạn /etc/apt/sources.list. Đối với tôi (trên jessie) tôi chỉ đặt cái này ở dưới cùng của tập tin của tôi:

# jessie-backports
deb http://httpredir.debian.org/debian jessie-backports main contrib non-free

đã lưu, cập nhật apt-get và cuối cùng:

apt-get install -t jessie-backports nvidia-cuda-toolkit

1

Sau khi thêm contrib và repos không miễn phí vào nguồn.list và chạy cập nhật apt-get, CUDA Toolkit nằm trong Synaptic dưới nvidia-cuda-toolkit.


1

Với Debian 9 "kéo dài" với GPU cũ hơn (GT 720), các bước bổ sung là cần thiết. Tôi thấy ai đó ở trên (@celavek) đã có cái này, vì vậy tôi sẽ điền vào những gì làm việc cho tôi. Câu trả lời được chấp nhận bao gồm hầu hết mọi thứ cần thiết. Nhận ra đây là một ví dụ khá hay, nhưng hy vọng có thể có một số điều hữu ích ở đây sẽ giúp mọi người tiết kiệm một vài tìm kiếm google.

Đối với CUDA 8.0 ở bước 1, nhấp vào "Phát hành kế thừa" và chọn "CUDA Toolkit 8.0 GA 2". Sau đó, Linux, x86_64, Ubuntu, 16.04, runfile (cục bộ).

Tôi đã không chấp nhận trình điều khiển đóng gói và thay vào đó sử dụng trình điều khiển 384.130 đã cài đặt trước đó cho GPU của tôi. Thông tin thêm về điều đó ở đây: Debian Wiki . Số dặm của bạn có thể thay đổi, tôi không thể nói cho các thẻ khác ngoài GT 720. Đây là con đường tôi đã chọn, tôi không hối tiếc (chưa).

Khi cài đặt không thành công do không thể cài đặt cục bộ InstallUtils.pm ở bước 12, bạn sẽ cần giải nén tệp cuda_8.0.61_375.26_linux.run nhưng chạy nó với cờ --tar mxvf. Sau đó (dưới quyền root) sao chép InstallUtils.pm sang / usr / lib / x86_64-linux-gnu / Pearl-base:

./cuda_8.0.61_375.26_linux.run --tar mxvf
sudo cp InstallUtils.pm /usr/lib/x86_64-linux-gnu/perl-base

Bây giờ bước 12 lệnh nên thành công.

Debian 9.0 của bạn đi kèm với g ++ phiên bản 6+, điều này sẽ không xảy ra. Việc biên dịch vectorAdd trong bước 15 sẽ thất bại. Tôi đã làm theo whitepaper này: Cài đặt nhiều phiên bản GCC để cài đặt phiên bản 5.5.0. Đối với 5.5.0, bạn sẽ muốn tệp này

wget http://mirrors.concertpass.com/gcc/releases/gcc-5.5.0/gcc-5.5.0.tar.xz

và giải nén tarball với điều này:

tar -xJf gcc-5.5.0.tar.xz

Tôi cần cập nhật một số thứ (thư viện và thêm trình biên dịch 32 bit) để làm việc này với tôi:

sudo apt-get install libgmp3-dev libmpfr-dev libmpc-dev
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install build-essential gcc-multilib rpm libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386

Bây giờ bạn có thể cấu hình, thực hiện và cài đặt trình biên dịch.

Nhớ cấu hình với cờ --prefix = / usr / local / gcc / 5.5.0

Bây giờ bạn có thể biên dịch ví dụ vectorAdd trong bước 15 với điều này:

make HOST_COMPILER=/usr/local/gcc/5.5.0/bin/g++

Hoặc này:

export HOST_COMPILER=/usr/local/gcc/5.5.0/bin/g++
make

Không cần phải sửa đổi Makefile, nó xử lý ghi đè trình biên dịch một cách chính xác.

Bây giờ bạn sẽ có một bản cài đặt CUDA 8.0 đang hoạt động.


0

Hãy thử sử dụng Trình cài đặt mạng cho Ubuntu từ trang này:

https://developer.nvidia.com/cuda-doads#linux

Trình cài đặt cho Ubuntu 14. * phải đủ tương thích.


1
Tôi nên đã đề cập rằng trình cài đặt Ubuntu không hoạt động - đã cập nhật bài đăng để phản ánh điều này.
Greg

@Greg, bạn đã tìm ra cách cài đặt Cuda trên Debian chưa?
nullgeppetto

@nullgeppetto Cuối cùng tôi đã từ bỏ ý tưởng về Debian vì tôi thấy quá nhiều vấn đề tương thích mà tôi không thể khắc phục.
Greg

@Greg, hmmm, đó là điều tôi sợ .. Vì vậy, bạn đã đi * ubfox hay cái gì khác? Cá nhân tôi vẫn đang chờ gtx 960 của mình, vì vậy tôi sẽ dùng thử trên Debian ... Tôi sẽ cho bạn biết nếu bạn muốn.
nullgeppetto

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.