Bagaimana saya bisa mendapatkan nVidia CUDA atau OpenCL bekerja pada laptop dengan kartu nVidia discrete / Intel Integrated Graphics?

28

Latar Belakang: Saya seorang seniman 3D (sebagai hobi) dan baru-baru ini mulai menggunakan Ubuntu 12,04 LTS sebagai dual-boot dengan Windows 7. Ini berjalan pada laptop Toshiba 64-bit yang cukup baru dengan GPU nVidia GeForce GT 540M ( kartu grafik). Ini juga, bagaimanapun memiliki Intel Integrated Graphics (yang saya curiga Ubuntu telah menggunakan).

Jadi, ketika saya membuat adegan 3D saya ke gambar di Windows, saya dapat memilih antara menggunakan CPU atau GPU nVidia saya (lebih cepat). Dari aplikasi 3D, saya dapat mengatur GPU untuk menggunakan CUDA atau OpenCL. Di Ubuntu, tidak ada opsi GPU.

Setelah melakukan (terlalu banyak?) Penelitian tentang masalah dengan Linux dan teknologi nVidia Optimus, saya sedikit lebih tercerahkan, tetapi jauh lebih bingung.

Saya tidak peduli sedikitpun tentang teknologi Optimus, karena daya tahan baterai sama sekali bukan masalah bagi saya.

Inilah pertanyaan saya: Apa yang dapat saya lakukan untuk dapat menggunakan program yang memanfaatkan CUDA (seperti Blender) pada GPU nVidia saya di Ubuntu? Apakah saya memerlukan driver nVidia? (Saya pernah mendengar mereka tidak bermain dengan baik dengan pengaturan Optimus di Linux.) Apakah ada setidaknya cara untuk menggunakan OpenCL pada GPU saya di Ubuntu?

Peter Cassetta
sumber

Jawaban:

27

Saya baru saja melakukan beberapa eksperimen dan dapat mengkonfirmasi pernyataan Eric Appleman bahwa Bumblebee tidak diperlukan untuk CUDA. (lebih lanjut tentang Bumblebee : Apakah NVIDIA GeForce dengan Teknologi Optimus didukung oleh Ubuntu? )

Namun, ketika Anda perlu menunjukkan contoh grafis menggunakan OpenGL, Anda melakukan perlu sesuatu seperti Bumblebee untuk sistem Optimus, jika tidak, anda juga tidak melihat apa-apa pada layar atau mendapatkan error:

ERROR: Support for necessary OpenGL extensions missing.

Saat menjalankan program CUDA, Anda perlu menginstal CUDA toolkit dan driver nvidia. Jika Anda ingin mengkompilasi program, Anda juga memerlukan SDK. Pemasang dapat ditemukan di http://developer.nvidia.com/cuda-downloads , silakan baca instruksi di bawah ini sebelum menyatukan laptop Optimus Anda.

Menginstal CUDA

Sopir

Saya merekomendasikan untuk menginstal driver nvidia dari manajer paket Ubuntu. Jika Anda menginstal Bumblebee, Anda tidak perlu khawatir tentang drivernya. Kalau tidak, setelah instalasi, nonaktifkan perpustakaan nvidia seperti yang dijelaskan di https://askubuntu.com/a/107746/6969 . Jika Anda tidak melakukannya, Anda akan kehilangan akselerasi 3D dan mungkin terjebak pada resolusi rendah.

Toolkit

Pada dasarnya Anda harus mengunduh installer, membuatnya dapat dieksekusi dan menjalankannya. - Unduh penginstal. Pada tulisan ini, 4.2.9 adalah driver terbaru. Karena saya sudah memiliki OS 64-bit, saya menggunakan paket Ubuntu 64-bit 11,04 (meskipun saya menjalankan 12,04) - Jadikan itu dapat dieksekusi dan izinkan instalasi untuk /usr/local/cuda:

chmod +x cudatoolkit_4.2.9_linux_64_ubuntu11.04.run
sudo ./cudatoolkit_4.2.9_linux_64_ubuntu11.04.run

Ketika pesan instalasi muncul yang menanyakan Anda di mana menginstal CUDA, cukup tekan Enter untuk menerima default /usr/local/cuda:

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

Setelah instalasi, itu akan mencetak beberapa pesan yang menyarankan untuk meletakkan direktori pustaka cuda ke jalur pencarian pustaka Anda:

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

Anda dapat melewati langkah ini jika ingin, tetapi kemudian Anda harus mengaturnya LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATHnanti ketika menjalankan program.

SDK

Jika Anda ingin dapat mengompilasi aplikasi CUDA, Anda dapat menginstal SDK dengan cara yang sama seperti yang dijelaskan di atas. Unduh, buat itu dapat dieksekusi dan jalankan (bukan sebagai root, mis. Tanpa sudo!). Ketika menyusun bagian-bagiannya, saya harus membuat beberapa perubahan untuk NVIDIA_GPU_Computing_SDK/C/common/common.mk:

  • setelah sekitar baris 189 OPENGLLIB := -lGL -lGLU -lX11 -lXi -lXmu,, tambahkan:

    OPENGLLIB += -L/usr/lib/nvidia-current -L/usr/lib32/nvidia-current
    
  • setelah sekitar baris 271, tukar ${RENDERCHECKGLLIB}dengan ${OPENGLLIB}sedemikian rupa sehingga terlihat seperti:

    LIB += $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) ${LIB} -ldl -rdynamic
    
  • beberapa (5) baris lebih jauh, lakukan hal yang sama, tetapi hapus -lcudajuga.
  • beberapa (7) baris lebih jauh, lakukan hal yang sama seperti yang Anda lakukan pada baris 271.

Menggunakan CUDA

CUDA tidak perlu X server yang digerakkan nvidia untuk bekerja. Dalam hal ini Anda dapat menjalankan program pengujian acak seperti:

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

Jika Anda belum menambahkan CUDA ke jalur perpustakaan Anda, Anda perlu:

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

(Anda dapat menghapus jalur 32-bit dari itu jika program Anda 64-bit).

Jika program CUDA memang memiliki sesuatu untuk ditampilkan menggunakan OpenGL, Anda harus menggunakan optirun:

 optirun blender

Atau, jika Anda tidak memiliki CUDA ditambahkan ke jalur default Anda:

LD_LIBRARY_PATH = / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH optirun blender

Lekensteyn
sumber
Terima kasih, saya akan memberikan hadiah itu kepada Anda (tapi saya akan menerima jawaban Komunitas Wiki saya).
Peter Cassetta
Selain itu, 100 rep dan upvote tidak secara akurat mengungkapkan betapa saya menghargai pekerjaan Anda di Proyek Bumblebee. Anda dan kolega Anda telah menjadikannya perangkat lunak yang hebat. Jadi terima kasih :)
Peter Cassetta
2
Sama-sama, sekarang saya harap waktu akan memberi kami solusi final dalam bentuk PRIME dengan tumpukan xorg + mesa (atau Wayland?) Yang diperbarui :)
Lekensteyn
1
PRIME , Xorg adalah server tampilan yang bertanggung jawab untuk menunjukkan Anda gambar, Mesa untuk OpenGL, Wayland adalah kemungkinan pengganti Xorg.
Lekensteyn
1
Orang harus mencatat bahwa CUDA membutuhkan driver NVIDIA minimum. Misalnya, CUDA 6.5 membutuhkan setidaknya NVIDIA 340.21.
Yamaneko 6-15
15

Inilah jawaban lengkapnya (berdasarkan jawaban Alex Falappa dan Lekensteyn ):

Memang mungkin untuk mendapatkan GPU nVidia Optimus untuk menjalankan CUDA di Ubuntu.

Bumblebee tidak diperlukan untuk CUDA. (lebih lanjut tentang Bumblebee : Apakah NVIDIA GeForce dengan Teknologi Optimus didukung oleh Ubuntu? )

Namun, ketika Anda perlu menunjukkan contoh grafis menggunakan OpenGL, Anda melakukan perlu sesuatu seperti Bumblebee untuk sistem Optimus, jika tidak, anda juga tidak melihat apa-apa pada layar atau mendapatkan error:

ERROR: Support for necessary OpenGL extensions missing. 

Jika Anda perlu menggunakan program grafis-intensif seperti Blender, Bumblebee saat ini adalah cara yang baik untuk pergi.

Lewati untuk Menginstal CUDA jika Anda tidak ingin menginstal Bumblebee (yaitu jika Anda tidak memerlukan OpenGL).
Kalau tidak, baca terus.

Menginstal Bumblebee

Ikuti instruksi di Seberapa baik laptop dengan Nvidia Optimus berfungsi?

Ini saat ini terus diperbarui oleh pengembang Bumblebee.

Setelah Anda menginstal Bumblebee dan mem-boot ulang, Anda akan dapat memilih kartu grafis untuk digunakan saat meluncurkan program dengan menggunakan optirunprogram.
Sebagai contoh:

optirun blender

Untuk dengan cepat menguji apakah semua berfungsi dengan benar, gunakan:

optirun glxspheres

Anda akan melihat sebuah program dengan bola berputar berwarna-warni jika semuanya bekerja dengan benar.

Pastikan string vendor GL di terminal berisi kata nvidia .
Jika Anda hanya menjalankan glxspheres, Anda akan melihat string vendor berisi kartu Intel sebagai gantinya.

Saat menjalankan program CUDA, Anda perlu menginstal CUDA toolkit dan driver nvidia. Jika Anda ingin mengkompilasi program, Anda juga memerlukan SDK. Pemasang dapat ditemukan di http://developer.nvidia.com/cuda-downloads , silakan baca instruksi di bawah ini sebelum menyatukan laptop Optimus Anda.

Menginstal CUDA

Sopir

Saya merekomendasikan untuk menginstal driver nvidia dari manajer paket Ubuntu. Jika Anda menginstal Bumblebee, Anda tidak perlu khawatir tentang drivernya. Kalau tidak, setelah instalasi, nonaktifkan perpustakaan nvidia seperti yang dijelaskan di https://askubuntu.com/a/107746/6969 . Jika tidak, Anda akan kehilangan akselerasi 3D dan mungkin terjebak pada resolusi rendah.

Toolkit

Pada dasarnya Anda harus mengunduh installer, membuatnya dapat dieksekusi dan menjalankannya. - Unduh penginstal. Pada 9 Jan 2013, 5.0.35 adalah driver terbaru. Karena saya memiliki OS 64-bit, saya menggunakan paket Ubuntu 64-bit 11,10 (meskipun saya menjalankan 12,10) - Jadikan itu dapat dieksekusi dan memungkinkan instalasi untuk /usr/local/cuda:

chmod +x cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run
sudo ./cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run

Ketika pesan instalasi muncul yang menanyakan Anda di mana menginstal CUDA, cukup tekan Enter untuk menerima default /usr/local/cuda:

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

Setelah instalasi, itu akan mencetak beberapa pesan yang menyarankan untuk meletakkan direktori pustaka cuda ke jalur pencarian pustaka Anda:

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

Anda dapat melewati langkah ini jika ingin, tetapi kemudian Anda harus mengaturnya LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATHnanti ketika menjalankan program.

SDK

Jika Anda ingin dapat mengompilasi aplikasi CUDA, Anda dapat menginstal SDK dengan cara yang sama seperti yang dijelaskan di atas. Unduh, buat itu dapat dieksekusi dan jalankan (bukan sebagai root, mis. Tanpa sudo!).

Menggunakan CUDA

CUDA tidak perlu X server yang digerakkan nvidia untuk bekerja. Dalam hal ini Anda dapat menjalankan program pengujian acak seperti:

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

Jika Anda belum menambahkan CUDA ke jalur perpustakaan Anda, Anda perlu:

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

(Anda dapat menghapus jalur 32-bit dari itu jika program Anda 64-bit).

Jika program CUDA memang memiliki sesuatu untuk ditampilkan menggunakan OpenGL, Anda harus menggunakan optirun:

 optirun blender

Atau, jika Anda tidak memiliki CUDA ditambahkan ke jalur default Anda:

LD_LIBRARY_PATH = / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH optirun blender

Menginstal Blender Build

(Dengan kernel CUDA yang sudah dikompilasi sebelumnya)

Ketika Anda menjalankan optirun blender, Anda mungkin mendapatkan pesan dari Blender yang mengatakan bahwa kompilasi kernel CUDA gagal, dan sebuah pesan di terminal mirip dengan yang berikut ini:

Compiling CUDA kernel ...
nvcc warning : Option '--opencc-options (-Xopencc)' is obsolete and ignored, when
targeting compute_20, sm_20, or higher
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
CUDA kernel compilation failed, see console for details.

Jika Anda ingin menggunakan fitur rendering GPU Blender, Anda mungkin memerlukan Blender build dengan kernel CUDA yang telah dikompilasi sebelumnya. Dibangun dari Blender.org, semuanya memiliki kernel CUDA yang telah dikompilasi sebelumnya; the ppa: cheleb / blender-svn builds ( informasi lebih lanjut pada pertanyaan ini ) tidak.

Untuk menginstal Blender resmi, cukup ikuti instruksi yang tercantum dalam jawaban ini .

Jika Anda telah menginstal Blender /usr/lib/blender, Anda kemudian dapat menjalankan Blender dari terminal dan menggunakan rendering GPU dengan:

 optirun '/usr/lib/blender/blender'
Peter Cassetta
sumber
Versi terbaru dari Bumblebee (diinstal dari Bumblebee / PPA stabil) tidak perlu usermodperintah. Saya akan terus memperbarui petunjuk pemasangan pada askubuntu.com/a/36936/6969 , jadi harap tautkan ke pos itu alih-alih menyalin petunjuk pemasangan itu.
Lekensteyn
@Lekensteyn Oke, sudah selesai!
Peter Cassetta
2

Grafis hibrida (biasanya grafis terintegrasi Intel dan grafis Nvidia diskrit) di Linux saat ini agak merepotkan. Sesuatu perlahan-lahan bergerak di bidang X server tetapi tidak menahan nafas.

Seperti yang sudah Anda duga, Bumblebee saat ini adalah cara yang baik untuk pergi.

Saya baru-baru ini membeli laptop Asus N55 dengan grafis Intel / Nvidia. Saya bisa mendapatkan penyaji Blender Cycles untuk menggunakan CUDA.

Ketika saya menginstal Ubuntu 12,04 menggunakan grafis terintegrasi secara default melalui driver grafis intel. Driver grafis noveau seharusnya tidak diinstal.

Kemudian saya membuka terminal dan melakukan:

sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia

Setelah itu saya lakukan (seperti yang direkomendasikan oleh instruksi instalasi):

sudo usermod -a -G bumblebee $USER

Lalu saya reboot.

Untuk memilih driver yang akan digunakan ketika meluncurkan program gunakan program optirun, misalnya:

optirun blender

Untuk menguji apakah semua berfungsi dengan benar, gunakan:

optirun glxspheres

Dan memverifikasi string vendor GL berisi kata Nvidia. Jika Anda menjalankan sebaliknya:

glxspheres

String vendor harus berisi kata Intel

Alex Falappa
sumber
Apakah saya perlu menginstal driver nVidia sebelum menginstal Bumblebee? Saya kira tidak, berdasarkan bagaimana Anda mengucapkan jawaban Anda. Juga, senang melihat seseorang dapat menggunakan CUDA di Ubuntu dengan kartu Optimus! Saya akan memilih ini segera setelah saya mendapatkan 15 rep. :)
Peter Cassetta
Oke, saya menginstal Bumblebee. Saya menggunakan optirundan saya dapat memverifikasi bahwa Blender menggunakan GPU nVidia saya untuk membuat viewport 3D. Namun, tidak ada opsi "GPU" pada dropdown di Preferensi Pengguna Blender. Ini hanya mencantumkan "CPU". Lihat tangkapan layar ini . Apakah saya perlu menginstal driver tambahan untuk menggunakan CUDA?
Peter Cassetta
1

Saya menemukan bahwa untuk menjalankan semua contoh CUDA, menggunakan Bumblebee, Anda harus menginstal driver 295,40 dari sini dan selama instalasi memilih untuk tidak menimpa para config x11.

Maka Anda harus menggunakan driver yang sama untuk mengkompilasi contoh dan menjalankan program.

olmer
sumber