Cara menggunakan CUDA dengan NVIDIA Prime

10

Saya telah menemukan setengah lusin posting tentang ini di seluruh web, tetapi tidak satupun dari mereka yang menjawab pertanyaan itu.

Saya ingin mengatur GPU nvidia saya hanya melakukan perhitungan, bukan menggerakkan layar. Tetapi ketika saya beralih menggunakan GPU Intel dalam konfigurasi nvidia-prime, saya tidak bisa lagi memuat modul nvidia.

modprobe: ERROR: could not insert 'nvidia_352': No such device

Tanpa modul, CUDA tidak berfungsi, jelas.

Jadi apa sebenarnya yang dilakukan nvidia-prime yang membuat tidak mungkin memuat modul? Itu tidak masuk daftar hitam. Tidak ada file xorg.conf, jadi bagaimana sistem tahu untuk menggunakan GPU Intel sebagai gantinya diskrit?

Saya menggunakan Dell 5510 Precision dengan pabrik Ubuntu 14.04 diinstal, dan GPU saya adalah Quadro M1000M.

Beberapa menyarankan menggunakan lebah, tetapi itu seharusnya tidak perlu untuk beban komputasi murni.

Juga, ternyata lebah mampu memuat modul. Jadi apa sebenarnya yang dilakukannya?

Update: Jadi mengapa selalu saya menemukan jawabannya ketika saya akhirnya mengirim pertanyaan, setelah berjam-jam mencoba mencari tahu. Sebenarnya ini hanya sebagian jawaban, tetapi saya sedang mengerjakan sesuatu.

Sejauh ini saya telah menentukan bahwa prime melakukan setidaknya dua hal:

  • Matikan GPU menggunakan bbswitch.
  • Mengubah alternatif untuk /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf.

Dengan menggunakan bbswitch untuk menghidupkan kembali GPU, saya sekarang dapat memuat modul NVIDIA.

Tetapi pertanyaannya masih ada: Apa cara terbaik untuk mengkonfigurasi sistem untuk menggunakan kartu NVIDIA hanya untuk perhitungan?

Haruskah saya mengatur nvidia-prime untuk menggunakan GPU Intel, dan mencoba untuk mengungkap secara manual apa yang dilakukan agar CUDA berfungsi?

Bagaimana saya memastikan bahwa sistem masih menggunakan GPU Intel untuk tampilan?

Bagaimana cara saya hanya menonaktifkan NVIDIA prime, dan mengonfigurasinya semuanya secara manual?

Atau haruskah saya menyerah dan menggunakan Bumblebee dan optirun? Apa kerugiannya jika ada?

Ada rekomendasi?

orodbhen
sumber
Bisakah Anda menonaktifkan tampilan pada GPU di aplikasi NVIDIA X Server Settings?
Roger Dahl
Utilitas NVIDIA hanya memungkinkan Anda memilih antara Intel dan NVIDIA GPU. Itu tidak menyediakan pengaturan berbutir halus, seperti kartu yang digunakan untuk tampilan.
orodbhen

Jawaban:

5

Dalam kasus saya, saya menemukan bahwa kartu NVidia sebenarnya tidak dimatikan, dan satu-satunya hal yang perlu saya lakukan untuk menjalankan kode CUDA adalah:

export LD_LIBRARY_PATH=/usr/lib/nvidia-352

di shell di mana saya ingin menjalankannya (saya berasumsi bahwa secara global mengubah pengaturan alternatif akan merusak compiz, dll, dll ...)

Untuk sampai ke titik ini (pada Dell Optiplex 7010, dengan Ubuntu 14.04, CUDA 7.5, dan GTX 980) saya percaya langkah-langkahnya adalah:

  1. Gunakan tab PRIME Profiles untuk memilih Intel
  2. Reboot, dan pilih Intel sebagai default di BIOS
  3. Matikan komputer
  4. Tancapkan monitor ke video onboard :)

Semuanya tampaknya berfungsi dengan baik sejauh ini (nvidia-smi melihat kartu, sampel cuda berjalan, theano menggunakan kartu, dll ...)

David Huggins Daines
sumber
1
Ya, sayangnya sepertinya tidak ada solusi yang konsisten, itulah sebabnya saya benar-benar ingin memahami apa yang terjadi di bawah tenda.
orodbhen
2

Saya percaya saya telah menemukan setidaknya solusi sepintas lalu untuk ini, seperti yang dijelaskan dalam pembaruan ke posting asli saya. Sungguh ada dua solusi yang saya temukan, meskipun saya yakin ada yang lain.

1 - Dengan Prime dalam mode Intel, aktifkan kembali kartu NVIDIA melalui bbswitch , kemudian jalankan modprobe nvidiauntuk memuat modul dan buat simpul perangkat.

2 - Gunakan Bumblebee optirun untuk meluncurkan sesi bash dari mana Anda dapat melakukan semua hal CUDA.

Kedua solusi ini memungkinkan Anda untuk menggunakan grafis onboard untuk tampilan Anda, saat menggunakan kartu NVIDIA untuk menghitung beban. Solusi optirun tampaknya lebih fleksibel, tapi saya lebih suka yang pertama karena minimalis.

Saya berharap seseorang dengan pemahaman yang lebih baik akan meningkatkan jawaban ini.

orodbhen
sumber
dapatkah Anda menjelaskan opsi pertama dengan lebih jelas? Bagaimana Anda menghidupkan dan mematikan kartu menggunakan bbswitch?
Abonec
Saya benar-benar menemukan cara agar lebah bekerja dengan baik, dan saya akan memperbarui jawaban saya ketika saya punya waktu. Saya pada dasarnya mengikuti ini . Sangat frustasi karena hal ini didokumentasikan dengan sangat buruk, karena ini sangat sederhana.
orodbhen
2

Saya menggunakan kartu NVIDIA hanya untuk eksekusi CUDA dan mencari tahu pendekatan ini:

Setiap saat saya menggunakan kartu intel dan dikonfirmasi oleh perintah lspci | grep -E "VGA|3D":

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev ff)

Pada baris yang sesuai untuk kartu NVIDIA, Anda akan melihat (rev ff)artinya dimatikan.

Untuk menghidupkan kartu dan menggunakannya untuk perhitungan CUDA saya menggunakan dua perintah berikut:

sudo prime-select nvidia
sudo prime-switch

Setelah lspci | grep -E "VGA|3D"laporan perintah itu :

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev a2)

Perhatikan tentang (rev a2), bukan (rev ff)di baris yang sesuai. Sekarang kartu siap untuk perhitungan.

Setelah perhitungan saya menggunakan tindakan mundur:

sudo prime-select intel
sudo prime-switch

Dan lspci | grep -E "VGA|3D"melaporkan:

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev ff)
Abonec
sumber
Jadi, pada dasarnya, Anda hanya perlu masuk kembali setelah beralih dengan prime, jika Anda ingin mengganti GPU yang menjalankan tampilan? Saya belum memikirkan hal itu, tetapi itu masuk akal. Tentu saja, Anda perlu memastikan Anda beralih kembali sebelum keluar atau memulai kembali.
orodbhen
Saya menggunakan pendekatan ini. Saya masuk dengan profil intel aktif sehingga Xorg dan firefox tidak menggunakan GPU. Lalu saya beralih ke profil nvidia dan semua pekerjaan CUDA saya kemudian berjalan pada GPU dan tidak harus bersaing dengan firefox dan Xorg untuk memori :)!
John
0

Jika seseorang masih menemukan masalah setelah mengikuti langkah-langkah dalam jawaban yang diterima, coba ini:

echo "install bbswitch /bin/true" > /etc/modprobe.d/blacklist-bbswitch.conf
update-initramfs -u

Ini akan menonaktifkan bbswitch sama sekali. Kekurangannya adalah Anda tidak dapat mematikan kartu NVIDIA untuk menghemat daya (Xorg masih menggunakan grafik terintegrasi, selama prime-select intel).

Huazuo Gao
sumber
0

Saya menggunakan ti 1070 dengan thinkpad T420 dalam egpu yang diatur untuk menambang mata uang kripto saat saya bekerja. Secara teoritis GPU akan membayar sendiri setelah beberapa bulan dengan cara ini.

Saya menemukan bahwa dengan nvidia 387 ekspor LD_LIBRARY_PATH = / usr / lib / nvidia-387 bekerja dengan ethminer menggunakan cuda.

Namun, satu-satunya cara saya bisa membuat sistem tetap bekerja setelah "prime-select intel" adalah jika saya memiliki monitor kedua yang dicolokkan ke kartu ketika saya melakukan seleksi dan keluar. Kalau tidak, saya akan mendapatkan kesalahan "Sistem sedang berjalan dalam mode grafis rendah", atau layar kosong terus-menerus. Tentu saja, ketika saya log-in menjalankan grafis intel, monitor yang terhubung ke GPU tidak menampilkan apa-apa, jadi saya harus mencabutnya dari GPU, dan menghubungkannya kembali ke sistem (DVI dock output) untuk menjalankan pengaturan duel monitor saya. .

Saya percaya ini karena gpu-manager mendeteksi bahwa bbswitch tidak berfungsi dan kemudian menghapus konfigurasi xorg.

Saya memposting ini untuk menunjukkan solusi bagi beberapa orang yang mungkin berada dalam situasi yang sama, tetapi juga untuk melihat apakah ada yang punya ide untuk menghentikan ini terjadi, karena harus memindahkan kabel itu untuk setiap reboot adalah sedikit masalah. kerepotan.

log_file: /var/log/gpu-manager.log

last_boot_file: / var / lib / ubuntu-drivers-common / last_gfx_boot new_boot_file: / var / lib / ubuntu-drivers-common / last_gfx_boot tidak dapat mengakses / menjalankan / udc-fglrx-was-loaded file Mencari file fglrx di / lib /modules/4.4.0-104-generic/updates/dkms Mencari modul nvidia di /lib/modules/4.4.0-104-generic/updates/dkms Ditemukan modul nvidia: nvidia_387_drm.ko Apakah nvidia dimuat? ya Apakah nvidia diturunkan? tidak Apakah nvidia masuk daftar hitam? ya Apakah fglrx dimuat? tidak Apakah fglrx diturunkan? tidak Apakah fglrx masuk daftar hitam? tidak Apakah intel dimuat? ya Apakah radeon dimuat? tidak Apakah radeon masuk daftar hitam? tidak Apakah amdgpu dimuat? tidak Apakah amdgpu masuk daftar hitam? tidak Apakah nouveau dimuat? tidak Apakah Anda baru saja masuk daftar hitam? ya Apakah modul kernel fglrx tersedia? tidak Apakah modul nvidia kernel tersedia? ya Vendor / Device Id: 8086: 126 BusID "PCI: 0 @ 0: 2: 0" Apakah boot vga? yes Vendor / Device Id: 10de: 1b82 BusID "PCI: conf Alternatif inti saat ini: (null) Alternatif egl saat ini: /usr/lib/nvidia-387-prime/ld.so.conf Apakah nvidia diaktifkan? tidak Apakah nvidia egl diaktifkan? tidak Apakah fglrx diaktifkan? tidak Apakah mesa diaktifkan? tidak Apakah mesa egl diaktifkan? tidak Apakah pxpress diaktifkan? tidak Apakah prime diaktifkan? ya Apakah prime egl diaktifkan? ya Apakah nvidia tersedia? ya Apakah nvidia egl tersedia? tidak Apakah fglrx tersedia? tidak Apakah fglrx-core tersedia? tidak Apakah mesa tersedia? ya Apakah mesa egl tersedia? ya Apakah pxpress tersedia? tidak Apakah prime tersedia? ya Apakah prime egl tersedia? tidak ada Intel IGP terdeteksi sistem hybrid Intel Nvidia versi driver 387.34 terdeteksi / sys / class / dmi / id / product_version = "ThinkPad T420" / sys / class / dmi / id / product_name = "4236L23" Percobaan pertama: bbswitch tanpa quirks Memuat bbswitch dengan "load_state = -1 unload_state = 1" parameter Kesalahan: bisa ' t open / proc / acpi / bbswitch Menghapus xorg.conf. Path: /etc/X11/xorg.conf tidak dapat mengakses /usr/share/gpu-manager.d/hybrid-power-saving Tidak perlu mengubah status bbswitch saat ini

Jika saya nano xorg.conf setelah ini kosong. Saya memposting ini setelah melakukan trik saklar monitor, dengan penambangan terjadi di latar belakang, dan xorg.conf saya masih kosong. Jadi tebakan saya adalah bahwa untuk beberapa alasan ketika saya menjaga monitor terhubung ke GPU pada lightdm restart tidak masalah bahwa xorg.conf saya dihapus. Ada ide?

sekarang
sumber
Juga ... Saya punya daftar hitam bbswitch seperti yang disarankan di atas, karena saya akan mendapatkan kesalahan terus-menerus saat boot. Saya dapat boot ke mode intel menggunakan nvidia-384 sekali atau dua kali, tetapi saya mengalami kesulitan melakukan penambangan dengan itu, dan saya pikir itu bisa karena dukungan 1070 ditambahkan dengan nvidia-387.
nhorning