Bagaimana cara menginstal CUDA Toolkit 7/8/9 pada Debian 8 (Jessie) atau 9 (Stretch)?

26

Bagaimana cara menginstal Cuda Toolkit 7.0 atau 8 di Debian 8?

Saya tahu bahwa Debian 8 hadir dengan opsi untuk mengunduh dan menginstal CUDA Toolkit 6.0 menggunakan apt-get install nvidia-cuda-toolkit, tetapi bagaimana Anda melakukan ini untuk CUDA toolkit versi 7.0 atau 8?

Saya mencoba menginstal menggunakan installer Ubuntu, seperti yang dijelaskan di bawah ini:

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

Namun tidak berhasil dan pesan berikut dikembalikan:

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.
Greg
sumber
@nullgeppetto: Silakan coba ikuti petunjuk dalam jawaban saya di bawah ini :-)
einpoklum - mengembalikan Monica

Jawaban:

30

Instruksi berikut ini berlaku untuk CUDA 7.0, 7.5, dan beberapa versi sebelumnya (dan mungkin nanti). Sejauh distribusi Debian, mereka berlaku untuk Jessie dan Stretch dan mungkin versi lainnya. Mereka menganggap arsitektur amd64 (x86_64), tetapi Anda dapat dengan mudah menyesuaikannya untuk x86 (x86_32).

Prasyarat instalasi

  • g ++ - Anda harus menggunakan versi GCC terbaru yang didukung oleh versi CUDA Anda. Untuk CUDA 7.x ini adalah versi 4.9.3, yang terakhir dari baris 4.x; untuk CUDA 8.0, versi GCC 5.x didukung. Jika distribusi Anda menggunakan GCC 5.x secara default, gunakan itu, jika tidak, GCC 5.4.0 harus melakukannya. Versi sebelumnya dapat digunakan tetapi saya tidak akan merekomendasikan mereka, jika hanya untuk dukungan fitur modern-C ++ yang lebih baik untuk kode sisi host.
  • gcc - dilengkapi dengan g ++. Saya bahkan berpikir CMake mungkin default untuk meminta nvcc memanggil gcc daripada g ++ dalam beberapa kasus dengan -xswitch (tapi tidak yakin tentang ini).
  • libGLU - Mesa OpenGL libraries (+ file pengembangan?)
  • libXi - X Window System Xinput library ekstensi (+ file pengembangan?)
  • libXmu - X Window System "miscellaneous utilities" library (+ file pengembangan?)
  • Kernel Linux - header untuk versi kernel yang Anda jalankan.

Jika Anda ingin daftar paket tertentu, itu tergantung pada distribusi mana yang tepat, tetapi cobalah yang berikut (untuk 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

Dan Anda mungkin menambahkan beberapa -dbgversi paket-paket itu untuk simbol debugging.

Saya cukup yakin ini mencakup semuanya - tetapi saya mungkin telah melewatkan sesuatu yang baru saja saya instal. Juga, CUDA dapat bekerja dengan dentang , setidaknya secara eksperimental, tetapi saya belum mencobanya.

Menginstal driver kernel CUDA

  1. Pergi ke halaman Unduhan CUDA NVIDIA .
  2. Pilih Linux> x86_64> Ubuntu , dan kemudian versi terbaru apa pun yang mereka miliki (pada saat penulisan: Ubuntu 15.04).
  3. Pilih opsi file .run .
  4. Unduh file .run (saat ini yang ini ). Pastikan untuk tidak memasukkannya ke dalam /tmp.
  5. Membuat file executable .run: chmod a+x cuda_7.5.18_linux.run.
  6. Menjadi root.
  7. Jalankan file .run: Berpura-pura menerima lisensi shrink-wrap konyol mereka; katakan "ya" untuk menginstal hanya driver kernel NVIDIA, dan katakan "tidak" untuk yang lainnya.

Instalasi akan memberi tahu Anda bahwa ia mengharapkan telah menginstal driver kernel NVIDIA, tetapi Anda harus reboot sebelum melanjutkan / mencoba lagi instalasi toolkit. Begitu...

  1. Setelah tampaknya berhasil, reboot.

Menginstal CUDA sendiri

  1. Jadilah root.
  2. Temukan dan jalankan cuda_7.5.18_linux.run
  3. Kali ini, katakan TIDAK untuk menginstal driver, tetapi Ya untuk menginstal segalanya, dan terima jalur default (atau ubah, apa pun yang cocok untuk Anda).

Pemasang sekarang cenderung gagal . Itu adalah hal yang baik dengan asumsi itu adalah jenis kegagalan yang kami harapkan: Ini akan memberi tahu Anda versi kompiler Anda tidak didukung - CUDA 7.0 atau 7.5 mendukung hingga gcc 4.9 dan Anda memiliki beberapa versi 5.x secara default. Sekarang, jika Anda mendapatkan pesan tentang perpustakaan yang hilang , itu berarti instruksi saya di atas tentang prasyarat gagal, dan Anda harus berkomentar di sini sehingga saya dapat memperbaikinya. Dengan asumsi Anda mendapat "kegagalan baik", lanjutkan ke:

  1. Meminta kembali file .run, kali ini dengan opsi --override.
  2. Buat pilihan yang sama seperti pada langkah 11.

CUDA sekarang harus diinstal, secara default di bawah /usr/local/cuda(itu adalah symlink). Tapi kita belum selesai!

Mengarahkan kompiler nvcc NVIDIA untuk menggunakan versi g ++ yang benar

Kompiler CUDA dari NVIDIA sebenarnya memanggil g ++ sebagai bagian dari proses penautan dan / atau untuk mengkompilasi file C ++ yang sebenarnya daripada file .cu. Kupikir. Bagaimanapun, ini default untuk menjalankan apa pun yang ada di jalur Anda sebagai g++; tetapi jika Anda menempatkan yang lain dig++ bawah /usr/local/cuda/bin, itu akan menggunakannya terlebih dahulu! Begitu...

  1. Jalankan symlink /usr/bin/g++-4.9 /usr/local/cuda/bin/g++(dan untuk ukuran yang baik, mungkin juga symlink /usr/bin/gcc-4.9 /usr/local/cuda/bin/gcc.

Itu dia.

Mencoba penginstalan

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

Membangun harus berhasil menyimpulkan, dan ketika Anda melakukannya

  1. ./vectorAdd

Anda harus mendapatkan output berikut:

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

Catatan

  • Anda tidak perlu menginstal NVIDIA GDK (GPU Development Kit), tetapi tidak sakit dan mungkin bermanfaat bagi sebagian orang. Instal ke direktori root sistem Anda; itu cukup aman dan ada sebuah uninstaller sesudahnya: /usr/bin/uninstall_gdk.pl. Dalam CUDA 8 sudah terintegrasi ke dalam CUDA sendiri IIANM.
  • Jangan menginstal paket tambahan dengan nama seperti nvidia -... atau cuda ...; mereka mungkin tidak terluka tetapi mereka pasti tidak akan membantu.
  • Sebelum melakukan hal-hal ini, Anda mungkin ingin memastikan GPU Anda dikenali sama sekali, menggunakan lspci | grep -i nvidia.
einpoklum - mengembalikan Monica
sumber
... well, hampir semua ini: Anda tidak dapat menginstal driver kernel jika Anda tidak melakukan root, tentu saja. Tetapi Anda dapat membangun (tidak menjalankan) kode CUDA tanpa itu.
einpoklum - mengembalikan Monica
Coba saja ini. installer cuda hanya menolak untuk menginstal. Ini menebus dengan peringatan bahwa Anda harus menggunakan file deb.
@WernerVanBelle: Bisakah Anda memposting itu sebagai pertanyaan terpisah? Atau paling tidak mengutip peringatan jika terlalu pendek? Juga, IIRC memiliki beberapa opsi baris perintah "force", sudahkah Anda mencobanya?
einpoklum - mengembalikan Monica
Semua ini - kecuali pemasangan driver - juga dapat dilakukan sebagai pengguna non-root di direktori home Anda, Tetapi itu hanya cukup untuk membuat kode CUDA, bukan untuk menjalankannya . Anda memerlukan driver nVIDIA yang sesuai di kernel Anda untuk itu, dan hanya pengguna root yang dapat mewujudkannya. Maaf atas komentar saya sebelumnya yang menyarankan sebaliknya. Juga, untuk membangun sebagai pengguna non-root, Anda mungkin perlu membangun versi gcc / g ++ sendiri jika distribusi Anda hanya memiliki versi yang lebih baru (untuk CUDA 7.x Anda perlu gcc 4.9.3).
einpoklum - mengembalikan Monica
@celavek: jika Anda berpikir jawaban ini tidak cukup baik untuk Debian 9, tolong jelaskan mengapa sebelum Anda membuat sunting yang disarankan.
einpoklum - mengembalikan Monica
6

Saya pikir Anda harus melakukannya menggunakan backports, saya benar-benar lancar menginstal nvidia-cuda-toolkit7,5 pada debian jessie.

Tambahkan backports, tidak gratis, ke /etc/apt/sources.list. Bagi saya (pada jessie) saya hanya meletakkan ini di bagian bawah file saya:

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

disimpan, pembaruan apt-get, dan akhirnya:

apt-get install -t jessie-backports nvidia-cuda-toolkit
Poso
sumber
1

Setelah menambahkan contrib dan repo tidak bebas ke sources.list dan menjalankan pembaruan apt-get, CUDA Toolkit ada di Synaptic di bawah nvidia-cuda-toolkit.

Gambar default
sumber
1

Dengan Debian 9 "stretch" dengan GPU yang lebih tua (GT 720) diperlukan langkah-langkah tambahan. Saya melihat seseorang di atas (@celavek) memiliki ini, jadi saya akan mengisi apa yang berhasil untuk saya. Jawaban yang diterima mencakup hampir semua yang dibutuhkan. Mengenali ini adalah contoh niche yang cantik, tapi mudah-mudahan ada beberapa hal berguna di sini yang akan menyelamatkan orang dari beberapa pencarian google.

Untuk CUDA 8.0 dalam langkah 1 klik "Rilis sebelumnya" dan pilih "CUDA Toolkit 8.0 GA 2". Kemudian Linux, x86_64, Ubuntu, 16.04, runfile (lokal).

Saya tidak menerima driver dalam paket dan sebagai gantinya menggunakan driver 384.130 yang sebelumnya saya instal untuk GPU saya. Info lebih lanjut tentang itu di sini: Debian Wiki . Jarak tempuh Anda mungkin berbeda, saya tidak bisa berbicara untuk kartu selain GT 720. Ini adalah jalur yang saya pilih, saya tidak menyesal (belum).

Ketika instalasi gagal karena ketidakmampuan untuk InstallUtils.pm lokal di langkah 12 Anda harus membongkar file cuda_8.0.61_375.26_linux.run tetapi menjalankannya dengan flag --tar mxvf. Kemudian (sebagai root) salin InstallUtils.pm ke / 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

Sekarang langkah 12 perintah harus berhasil.

Debian 9.0 Anda hadir dengan g ++ versi 6+, ini tidak akan berhasil. Kompilasi vectorAdd pada langkah 15 akan gagal. Saya mengikuti whitepaper ini: Menginstal Beberapa Versi GCC untuk menginstal versi 5.5.0. Untuk 5.5.0 Anda menginginkan file ini

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

dan membongkar tarball dengan ini:

tar -xJf gcc-5.5.0.tar.xz

Saya perlu memperbarui beberapa hal (perpustakaan dan menambahkan kompilasi 32-bit) agar ini berfungsi untuk saya:

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

Sekarang Anda dapat mengkonfigurasi, membuat, dan menginstal kompiler.

Ingatlah untuk mengonfigurasi dengan flag --prefix = / usr / local / gcc / 5.5.0

Sekarang Anda dapat mengkompilasi vektorTambahkan contoh pada langkah 15 dengan ini:

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

Atau ini:

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

Tidak perlu memodifikasi Makefile, ia menangani override compiler dengan benar.

Anda sekarang harus memiliki instalasi CUDA 8.0 yang bekerja pada peregangan.

Ingo
sumber
0

Coba gunakan Penginstal Jaringan untuk Ubuntu dari halaman ini:

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

Pemasang untuk Ubuntu 14. * harus cukup kompatibel.

Tomasz Klim
sumber
1
Saya seharusnya menyebutkan bahwa penginstal ubuntu tidak berfungsi - memperbarui pos untuk mencerminkan hal ini.
Greg
@ Greg, sudahkah Anda tahu cara menginstal Cuda di Debian akhirnya?
nullgeppetto
@ nullgeppetto Saya akhirnya menyerah pada ide Debian karena saya menemukan terlalu banyak masalah kompatibilitas yang tidak dapat saya atasi.
Greg
@Greg, hmmm, itu yang saya takutkan .. Jadi, apakah Anda menggunakan * ubuntu atau yang lainnya? Secara pribadi, saya masih menunggu GTX 960 saya, jadi saya akan mencobanya di Debian ... Saya akan memberi tahu Anda jika Anda mau.
nullgeppetto