ฉันจะทำให้ nVidia CUDA หรือ OpenCL ทำงานบนแล็ปท็อปที่มีการ์ดแยกต่อเนื่อง nVidia / Intel Integrated Graphics ได้อย่างไร


28

แบ็คกราวน์: ฉันเป็นศิลปิน 3D (เป็นงานอดิเรก) และเพิ่งเริ่มใช้ Ubuntu 12.04 LTS เป็นดูอัลบูตด้วย Windows 7 มันทำงานบนแล็ปท็อปโตชิบา 64 บิตใหม่ที่มี NVIDIA GeForce GT 540M GPU ของฉัน ( กราฟิกการ์ด) นอกจากนี้ยังมี Intel Integrated Graphics (ซึ่งฉันสงสัยว่าใช้งานกับ Ubuntu)

ดังนั้นเมื่อฉันแสดงฉาก 3 มิติของฉันไปยังภาพบน Windows ฉันสามารถเลือกระหว่างการใช้ CPU หรือ GPU nVidia ของฉัน (เร็วกว่า) จากแอปพลิเคชัน 3D ฉันสามารถตั้งค่าให้ GPU ใช้ CUDA หรือ OpenCL ใน Ubuntu ไม่มีตัวเลือก GPU

หลังจากทำวิจัย (มากไป) เกี่ยวกับปัญหาเกี่ยวกับ Linux และเทคโนโลยี nVidia Optimus ฉันรู้แจ้งเพิ่มขึ้นเล็กน้อย แต่สับสนมากขึ้น

ฉันไม่สนใจสักนิดเกี่ยวกับเทคโนโลยี Optimus เพราะอายุการใช้งานแบตเตอรี่นั้นไม่ได้เป็นปัญหาสำหรับฉันเลย

นี่คือคำถามของฉัน: ฉันจะทำอย่างไรเพื่อให้สามารถใช้โปรแกรมที่ใช้ประโยชน์จาก CUDA (เช่น Blender) บน nVidia GPU ของฉันใน Ubuntu ฉันต้องการไดรเวอร์ของ nVidia หรือไม่ (ฉันได้ยินมาว่าพวกเขาไม่ได้เล่นกับการตั้งค่า Optimus บน Linux) อย่างน้อยมีวิธีใช้ OpenCL บน GPU ของฉันใน Ubuntu หรือไม่?

คำตอบ:


27

ฉันเพิ่งทดลองใช้แล้วและสามารถยืนยันข้อความของ Eric Appleman ได้ว่า Bumblebee นั้นไม่จำเป็นสำหรับ CUDA (เพิ่มเติมเกี่ยวกับBumblebee : NVIDIA GeForce พร้อมเทคโนโลยี Optimus รองรับโดย Ubuntu หรือไม่ )

แต่เมื่อคุณจะต้องแสดงตัวอย่างแบบกราฟิกที่ใช้ OpenGL คุณทำบางสิ่งบางอย่างจำเป็นต้องเหมือนผึ้งสำหรับระบบออปติมัสมิฉะนั้นคุณอาจไม่เห็นอะไรบนหน้าจอของคุณหรือได้รับข้อผิดพลาด:

ERROR: Support for necessary OpenGL extensions missing.

เมื่อรันโปรแกรม CUDA คุณต้องติดตั้งชุดเครื่องมือ CUDA และไดรเวอร์ nvidia หากคุณต้องการรวบรวมโปรแกรมคุณต้องมี SDK ด้วย โปรแกรมติดตั้งสามารถพบได้ในhttp://developer.nvidia.com/cuda-downloadsโปรดอ่านคำแนะนำด้านล่างก่อนที่จะเปิดแล็ปท็อป Optimus ของคุณ

กำลังติดตั้ง CUDA

คนขับรถ

ฉันแนะนำให้ติดตั้งไดรเวอร์ nvidia จากตัวจัดการแพ็คเกจของ Ubuntu หากคุณติดตั้ง Bumblebee คุณไม่จำเป็นต้องกังวลเกี่ยวกับไดรเวอร์ มิฉะนั้นหลังจากการติดตั้งให้ปิดการใช้งานไลบรารี nvidia ตามที่อธิบายไว้ในhttps://askubuntu.com/a/107746/6969 https://askubuntu.com/a/107746/6969หากคุณไม่ทำเช่นนั้นคุณจะสูญเสียการเร่ง 3D และอาจติดค้างที่ความละเอียดต่ำ

Toolkit

โดยทั่วไปคุณจะต้องดาวน์โหลดตัวติดตั้งทำให้สามารถเรียกใช้และเรียกใช้งานได้ - ดาวน์โหลดตัวติดตั้ง จากการเขียนนี้ 4.2.9 เป็นไดร์เวอร์ตัวล่าสุด เนื่องจากฉันเป็นระบบปฏิบัติการ 64 บิตฉันใช้แพคเกจ Ubuntu 64- บิต 11.04 (แม้ว่าฉันจะใช้ 12.04) - ทำให้ปฏิบัติการและอนุญาตให้ติดตั้งเพื่อ/usr/local/cuda:

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

เมื่อข้อความการติดตั้งเกิดขึ้นซึ่งถามว่าจะติดตั้ง CUDA ที่ไหนให้กด Enter เพื่อยอมรับค่าเริ่มต้น/usr/local/cuda:

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

หลังจากการติดตั้งแล้วมันจะพิมพ์ข้อความที่แนะนำให้ใส่ไดเรกทอรี cuda library ลงในพา ธ การค้นหาห้องสมุดของคุณ:

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

* 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

คุณสามารถข้ามขั้นตอนนี้หากคุณต้องการ แต่จากนั้นคุณต้องตั้งค่าในLD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATHภายหลังเมื่อเรียกใช้โปรแกรม

SDK

หากคุณต้องการคอมไพล์แอพพลิเคชั่น CUDA คุณสามารถติดตั้ง SDK ได้ในลักษณะเดียวกันตามที่อธิบายไว้ข้างต้น ดาวน์โหลด, ทำให้มันสามารถเรียกใช้งานได้และรันมัน (ไม่ใช่รูท, เช่นไม่มีsudo!) เมื่อรวบรวมบางส่วนของมันฉันต้องทำการเปลี่ยนแปลงบางอย่างNVIDIA_GPU_Computing_SDK/C/common/common.mk:

  • หลังจากนั้นประมาณ 189 บรรทัดOPENGLLIB := -lGL -lGLU -lX11 -lXi -lXmuให้เพิ่ม:

    OPENGLLIB += -L/usr/lib/nvidia-current -L/usr/lib32/nvidia-current
    
  • หลังจากเกี่ยวกับบรรทัด 271 ให้สลับ${RENDERCHECKGLLIB}กับ${OPENGLLIB}ที่ดูเหมือน:

    LIB += $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) ${LIB} -ldl -rdynamic
    
  • อีกไม่กี่บรรทัด (5) ให้ทำเช่นเดียวกัน แต่ลบออก -lcudaด้วย
  • เพิ่มเติมอีกสองสามบรรทัดทำเช่นเดียวกับที่คุณทำในบรรทัด 271

ใช้ CUDA

CUDA ไม่ต้องการเซิร์ฟเวอร์ X ที่ทำงานด้วย nvidia ในการทำงาน ในกรณีนี้คุณสามารถรันโปรแกรมทดสอบแบบสุ่มของคุณเช่น:

LD_LIBRARY_PATH = / usr / lib / nvidia- ปัจจุบัน: / usr / lib32 / nvidia- ปัจจุบัน: $ LD_LIBRARY_PATH บางโปรแกรมแนะนำโปรแกรม

หากคุณยังไม่ได้เพิ่ม CUDA ในเส้นทางห้องสมุดของคุณคุณจะต้อง:

LD_LIBRARY_PATH = / usr / lib / nvidia- ปัจจุบัน: / usr / lib32 / nvidia- ปัจจุบัน: / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH บางคอมมิชชันIntensiveProgram

(คุณสามารถตัดพา ธ 32- บิตได้หากโปรแกรมของคุณเป็น 64- บิต)

หากโปรแกรม CUDA มีสิ่งที่จะแสดงโดยใช้ OpenGL คุณต้องใช้ optirun:

 optirun blender

หรือถ้าคุณไม่ได้เพิ่ม CUDA ในเส้นทางเริ่มต้นของคุณ:

LD_LIBRARY_PATH = / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH เครื่องปั่น Optirun


ขอบคุณฉันจะให้รางวัลแก่คุณ (แต่ฉันจะยอมรับคำตอบ Community Wiki ของฉัน)
ปีเตอร์ Cassetta

นอกจากนี้ 100 ตัวแทนและ upvote ไม่ถูกต้องแม่นยำเท่าไหร่ฉันชื่นชมการทำงานของคุณในโครงการภมร คุณและเพื่อนร่วมงานของคุณทำให้มันเป็นซอฟต์แวร์ที่ยอดเยี่ยม ขอบคุณมาก :)
ปีเตอร์ Cassetta

2
ยินดีต้อนรับตอนนี้ฉันหวังว่าเวลาจะมอบรางวัลให้แก่เราด้วยโซลูชั่นขั้นสุดท้ายในรูปแบบของ PRIME พร้อมสแต็ก xorg + mesa (หรือ Wayland?) ที่อัปเดต :)
Lekensteyn

1
PRIME , Xorg เป็นเซิร์ฟเวอร์การแสดงผลที่รับผิดชอบในการแสดงกราฟิกให้คุณ Mesa ใช้สำหรับ OpenGL ส่วนWaylandเป็นผู้สืบทอด Xorg
Lekensteyn

1
หนึ่งควรทราบว่า CUDA ต้องใช้ไดรเวอร์ NVIDIA ขั้นต่ำ ตัวอย่างเช่น CUDA 6.5 ต้องการอย่างน้อย NVIDIA 340.21
Yamaneko

15

นี่คือคำตอบที่สมบูรณ์ (อิงจากคำตอบของAlex FalappaและLekensteyn ):

เป็นไปได้ที่จะรับ nVidia Optimus GPUs เพื่อใช้ CUDA บน Ubuntu

Bumblebee ไม่จำเป็นสำหรับ CUDA (เพิ่มเติมเกี่ยวกับBumblebee : NVIDIA GeForce พร้อมเทคโนโลยี Optimus รองรับโดย Ubuntu หรือไม่ )

แต่เมื่อคุณจะต้องแสดงตัวอย่างแบบกราฟิกที่ใช้ OpenGL คุณทำบางสิ่งบางอย่างจำเป็นต้องเหมือนผึ้งสำหรับระบบออปติมัสมิฉะนั้นคุณอาจไม่เห็นอะไรบนหน้าจอของคุณหรือได้รับข้อผิดพลาด:

ERROR: Support for necessary OpenGL extensions missing. 

หากคุณต้องการใช้โปรแกรมที่เน้นกราฟิกเช่น Blender ปัจจุบัน Bumblebee เป็นหนทางที่ดีในการไป

ข้ามไปที่การติดตั้ง CUDAหากคุณไม่ต้องการติดตั้ง Bumblebee (เช่นถ้าคุณไม่ต้องการ OpenGL)
มิฉะนั้นอ่านต่อ

การติดตั้ง Bumblebee

ทำตามคำแนะนำที่แล็ปท็อปกับ Nvidia Optimus ทำงานได้ดีแค่ไหน?

สิ่งเหล่านี้ได้รับการปรับปรุงให้ทันสมัยโดยนักพัฒนา Bumblebee

เมื่อคุณติดตั้ง Bumblebee แล้วรีบูทคุณจะสามารถเลือกกราฟิกการ์ดที่จะใช้เมื่อเรียกใช้งานโปรแกรมโดยใช้optirunโปรแกรม
ตัวอย่างเช่น:

optirun blender

หากต้องการทดสอบอย่างรวดเร็วว่าทำงานได้อย่างถูกต้องหรือไม่ให้ใช้:

optirun glxspheres

คุณจะเห็นโปรแกรมที่มีทรงกลมสีสันสดใสหากทุกอย่างทำงานอย่างถูกต้อง

ตรวจสอบว่าสตริง GL ผู้ขายใน terminal มีคำว่าNVIDIA
หากคุณเรียกใช้เท่านั้นglxspheresคุณจะเห็นสตริงผู้ขายที่มีการ์ด Intel แทน

เมื่อรันโปรแกรม CUDA คุณต้องติดตั้งชุดเครื่องมือ CUDA และไดรเวอร์ nvidia หากคุณต้องการรวบรวมโปรแกรมคุณต้องมี SDK ด้วย โปรแกรมติดตั้งสามารถพบได้ในhttp://developer.nvidia.com/cuda-downloadsโปรดอ่านคำแนะนำด้านล่างก่อนที่จะเปิดแล็ปท็อป Optimus ของคุณ

กำลังติดตั้ง CUDA

คนขับรถ

ฉันแนะนำให้ติดตั้งไดรเวอร์ nvidia จากตัวจัดการแพ็คเกจของ Ubuntu หากคุณติดตั้ง Bumblebee คุณไม่จำเป็นต้องกังวลเกี่ยวกับไดรเวอร์ มิฉะนั้นหลังจากการติดตั้งปิดการใช้งานห้องสมุด NVIDIA ตามที่อธิบายไว้ในhttps://askubuntu.com/a/107746/6969 หากคุณทำไม่ได้คุณจะสูญเสียการเร่งความเร็ว 3 มิติและอาจติดค้างที่ความละเอียดต่ำ

Toolkit

โดยทั่วไปคุณจะต้องดาวน์โหลดตัวติดตั้งทำให้สามารถเรียกใช้และเรียกใช้งานได้ - ดาวน์โหลดตัวติดตั้ง ตั้งแต่วันที่ 9 มกราคม 2013, 5.0.35 เป็นไดรเวอร์ล่าสุด เนื่องจากฉันเป็นระบบปฏิบัติการ 64 บิตฉันใช้แพคเกจ Ubuntu รุ่น 64 บิต 11.10 (แม้ว่าฉันจะใช้งาน 12.10 อยู่ก็ตาม) - ทำให้ใช้งานได้และอนุญาตให้ติดตั้งได้/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

เมื่อข้อความการติดตั้งเกิดขึ้นซึ่งถามว่าจะติดตั้ง CUDA ที่ไหนให้กด Enter เพื่อยอมรับค่าเริ่มต้น/usr/local/cuda:

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

หลังจากการติดตั้งแล้วมันจะพิมพ์ข้อความที่แนะนำให้ใส่ไดเรกทอรี cuda library ลงในพา ธ การค้นหาห้องสมุดของคุณ:

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

* 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

คุณอาจข้ามขั้นตอนนี้หากคุณต้องการ แต่จากนั้นคุณต้องตั้งค่าในLD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATHภายหลังเมื่อเรียกใช้โปรแกรม

SDK

หากคุณต้องการคอมไพล์แอพพลิเคชั่น CUDA คุณสามารถติดตั้ง SDK ได้ในลักษณะเดียวกันตามที่อธิบายไว้ข้างต้น ดาวน์โหลด, ทำให้มันสามารถเรียกใช้งานได้และรันมัน (ไม่ใช่รูท, เช่นไม่มีsudo!)

ใช้ CUDA

CUDA ไม่ต้องการเซิร์ฟเวอร์ X ที่ทำงานด้วย nvidia ในการทำงาน ในกรณีนี้คุณสามารถรันโปรแกรมทดสอบแบบสุ่มของคุณเช่น:

LD_LIBRARY_PATH = / usr / lib / nvidia- ปัจจุบัน: / usr / lib32 / nvidia- ปัจจุบัน: $ LD_LIBRARY_PATH บางโปรแกรมแนะนำโปรแกรม

หากคุณยังไม่ได้เพิ่ม CUDA ในเส้นทางห้องสมุดของคุณคุณจะต้อง:

LD_LIBRARY_PATH = / usr / lib / nvidia- ปัจจุบัน: / usr / lib32 / nvidia- ปัจจุบัน: / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH บางคอมมิชชันIntensiveProgram

(คุณสามารถตัดพา ธ 32- บิตได้หากโปรแกรมของคุณเป็น 64- บิต)

หากโปรแกรม CUDA มีสิ่งที่จะแสดงโดยใช้ OpenGL คุณต้องใช้ optirun:

 optirun blender

หรือถ้าคุณไม่ได้เพิ่ม CUDA ในเส้นทางเริ่มต้นของคุณ:

LD_LIBRARY_PATH = / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH เครื่องปั่น Optirun

การติดตั้ง Blender Build

(ด้วยเมล็ด CUDA ที่รวบรวมไว้ล่วงหน้า)

เมื่อคุณเรียกใช้optirun blenderคุณอาจได้รับข้อความจาก Blender โดยระบุว่าการรวบรวมเคอร์เนล CUDA ล้มเหลวและข้อความในเทอร์มินัลคล้ายกับข้อความต่อไปนี้:

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.

หากคุณต้องการใช้คุณสมบัติการเรนเดอร์ GPU ของ Blender คุณอาจต้องสร้าง Blender ด้วยเมล็ด CUDA ที่รวบรวมไว้ล่วงหน้า งานสร้างจากBlender.orgทุกคนมีเมล็ดใน CUDA ที่รวบรวมไว้ล่วงหน้า; ppa: cheleb / blender-svn บิวด์ ( ข้อมูลเพิ่มเติมที่คำถามนี้ ) ทำไม่ได้

ในการติดตั้งบิวเดอเครื่องปั่นอย่างเป็นทางการเพียงทำตามคำแนะนำที่วางไว้ในคำตอบนี้

หากคุณติดตั้ง Blender ไว้/usr/lib/blenderคุณควรจะสามารถเรียกใช้ Blender จากเทอร์มินัลและใช้การเรนเดอร์ GPU ด้วย:

 optirun '/usr/lib/blender/blender'

เวอร์ชันล่าสุดของ Bumblebee (ติดตั้งจาก bumblebee / PPA ที่เสถียร) ไม่จำเป็นต้องใช้usermodคำสั่ง ฉันจะเก็บคำแนะนำการติดตั้งไว้ที่askubuntu.com/a/36936/6969อัปเดตดังนั้นโปรดลิงก์ไปที่โพสต์นั้นแทนที่จะคัดลอกคำแนะนำการติดตั้งเหล่านั้น
Lekensteyn

@Lekensteyn เอาล่ะเสร็จแล้ว!
Peter Cassetta

2

ไฮบริดกราฟิกส์ (โดยปกติคือ Intel integrated graphics และ Nvidia discrete graphics) การสนับสนุนภายใต้ Linux นั้นค่อนข้างลำบาก มีบางอย่างกำลังเคลื่อนที่อย่างช้า ๆ ในฟิลด์เซิร์ฟเวอร์ X แต่อย่ากลั้นหายใจ

อย่างที่คุณเดาได้ว่า Bumblebee นั้นเป็นวิธีที่ดีที่จะไป

ฉันเพิ่งซื้อแล็ปท็อป Asus N55 ที่มีกราฟิก Intel / Nvidia ฉันสามารถใช้ตัวสร้างภาพ Blender Cycles เพื่อใช้ CUDA ได้

เมื่อฉันติดตั้ง Ubuntu 12.04 มันใช้กราฟิกแบบรวมโดยปริยายไดรเวอร์กราฟิก Intel ไม่ควรติดตั้งไดรเวอร์กราฟิก noveau

จากนั้นฉันเปิดเทอร์มินัลและทำ:

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

หลังจากนั้นฉันทำ (ตามคำแนะนำในการติดตั้ง):

sudo usermod -a -G bumblebee $USER

จากนั้นฉันรีบูท

ในการเลือกไดรเวอร์ที่จะใช้เมื่อเรียกใช้โปรแกรมให้ใช้โปรแกรม optirun เช่น:

optirun blender

วิธีทดสอบว่าใช้งานได้ถูกต้องหรือไม่:

optirun glxspheres

และตรวจสอบว่าสตริงผู้จำหน่าย GL มีคำว่า Nvidia หากคุณทำงานแทน:

glxspheres

สตริงผู้ขายควรมีคำของ Intel


ฉันจะต้องติดตั้งไดรเวอร์ nVidia ก่อนติดตั้ง Bumblebee หรือไม่? ฉันคาดเดาไม่ได้ขึ้นอยู่กับว่าคุณพูดคำตอบของคุณอย่างไร นอกจากนี้ยังเป็นการดีที่ได้เห็นบางคนสามารถใช้ CUDA บน Ubuntu ด้วยการ์ด Optimus ได้! ฉันจะลงคะแนนนี้ทันทีที่ฉันได้รับ 15 ตัวแทน :)
ปีเตอร์ Cassetta

ฉันติดตั้ง Bumblebee แล้ว ฉันใช้optirunและฉันสามารถตรวจสอบได้ว่า Blender ใช้ GPU ของฉัน nVidia เพื่อแสดงวิว 3D อย่างไรก็ตามไม่มีตัวเลือก "GPU" ในเมนูดร็อปดาวน์ในการตั้งค่าผู้ใช้ Blender จะแสดงรายการ "CPU" เท่านั้น ดูภาพหน้าจอนี้ ฉันจะต้องติดตั้งไดรเวอร์เพิ่มเติมเพื่อใช้ CUDA หรือไม่
Peter Cassetta

1

ผมพบว่าการเรียกใช้ตัวอย่างทั้งหมดของ CUDA ใช้ภมรคุณจะต้องติดตั้งไดรเวอร์ 295.40 จากที่นี่และในระหว่างการติดตั้งเลือกที่จะไม่แทนที่config x11

จากนั้นคุณต้องใช้ไดรเวอร์เดียวกันเพื่อรวบรวมตัวอย่างและเรียกใช้โปรแกรม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.