วิธีใช้ CUDA กับ NVIDIA Prime


10

ฉันได้พบโพสต์ครึ่งเรื่องบนเว็บนี้ แต่ไม่มีใครตอบคำถามได้จริงๆ

ฉันต้องการเซ็ตอัพ nvidia GPU ของฉันเพื่อคำนวณเท่านั้นไม่ขับจอแสดงผล แต่เมื่อฉันเปลี่ยนไปใช้ Intel GPU ในการกำหนดค่า nvidia-prime ฉันไม่สามารถโหลดโมดูล nvidia ได้อีกต่อไป

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

หากไม่มีโมดูล CUDA จะไม่ทำงานอย่างชัดเจน

ดังนั้นสิ่งที่ nvidia-prime กำลังทำอยู่ทำให้ไม่สามารถโหลดโมดูลได้? มันไม่ใช่บัญชีดำ ไม่มีไฟล์ xorg.conf ดังนั้นระบบจะทราบได้อย่างไรว่าจะใช้ Intel GPU แทนไฟล์ที่แยกออกมา

ฉันใช้ Dell 5510 Precision พร้อมติดตั้ง Ubuntu 14.04 และ GPU ของฉันคือ Quadro M1000M

บางคนแนะนำให้ใช้ bumblebee แต่ก็ไม่จำเป็นสำหรับการคำนวณด้วยคอมพิวเตอร์

และเห็นได้ชัดว่า bumblebee สามารถโหลดโมดูลได้ แล้วมันทำอะไรกันแน่?

Update:ดังนั้นทำไมมันมักจะดูเหมือนว่าฉันหาคำตอบเมื่อฉันโพสต์คำถามในที่สุดหลังจากชั่วโมงของการพยายามคิดออก จริง ๆ แล้วนี่เป็นเพียงคำตอบบางส่วน แต่ฉันก็ทำอะไรซักอย่าง

จนถึงตอนนี้ฉันได้พิจารณาแล้วว่านายกทำอย่างน้อยสองสิ่ง:

  • ปิด GPU โดยใช้ bbswitch
  • เปลี่ยนทางเลือกสำหรับ /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf

ด้วยการใช้bbswitchเพื่อเปิด GPU ตอนนี้ฉันสามารถโหลดโมดูล NVIDIA ได้แล้ว

แต่คำถามยังคงอยู่: วิธีที่ดีที่สุดในการกำหนดค่าระบบให้ใช้การ์ด NVIDIA สำหรับการคำนวณเท่านั้นคืออะไร

ฉันควรตั้งค่า nvidia-prime ให้ใช้ Intel GPU และพยายามที่จะเปิดเผยสิ่งที่ทำให้ CUDA ทำงานด้วยตนเองได้หรือไม่

ฉันจะมั่นใจได้อย่างไรว่าระบบยังคงใช้ Intel GPU สำหรับจอแสดงผล

ฉันจะปิดการใช้งาน NVIDIA prime ได้อย่างไรและกำหนดค่าด้วยตนเองทั้งหมดได้อย่างไร

หรือฉันควรจะให้และใช้ Bumblebee และ optirun อะไรคือข้อเสียของสิ่งนี้ถ้ามี?

คำแนะนำใด ๆ


คุณสามารถปิดการแสดงผลของ GPU ในแอพ NVIDIA X Server Settings ได้หรือไม่?
Roger Dahl

ยูทิลิตี้ NVIDIA อนุญาตให้คุณเลือกระหว่าง Intel และ NVIDIA GPU เท่านั้น มันไม่ได้มีการตั้งค่าที่ละเอียดมากเช่นการ์ดที่จะใช้สำหรับการแสดงผล
orodbhen

คำตอบ:


5

ในกรณีของฉันฉันพบว่าการ์ด NVidia ไม่ได้ถูกปิดจริง ๆ และสิ่งเดียวที่ฉันต้องทำเพื่อเรียกใช้รหัส CUDA คือ:

export LD_LIBRARY_PATH=/usr/lib/nvidia-352

ในเชลล์ที่ฉันต้องการเรียกใช้ (ฉันสมมติว่าการเปลี่ยนการตั้งค่าทางเลือกทั่วโลกจะทำให้คอมโพสิตเสียหาย ฯลฯ ฯลฯ )

เพื่อให้ได้มาถึงจุดนี้ (บน Dell Optiplex 7010, กับ Ubuntu 14.04, CUDA 7.5 และ GTX 980) ฉันเชื่อว่าขั้นตอนต่าง ๆ ได้แก่ :

  1. ใช้แท็บโปรไฟล์ PRIME เพื่อเลือก Intel
  2. รีบูตและเลือก Intel เป็นค่าเริ่มต้นใน BIOS
  3. ปิดเครื่องคอมพิวเตอร์
  4. เสียบจอภาพเข้ากับวิดีโอออนบอร์ด :)

ทุกอย่างดูเหมือนว่าจะทำงานได้ดีจนถึงปัจจุบัน (nvidia-smi เห็นการ์ด, ตัวอย่าง cuda ทำงาน, theano ใช้การ์ด, ฯลฯ .. )


1
ใช่โชคไม่ดีที่ดูเหมือนจะไม่เป็นทางออกที่สอดคล้องกันซึ่งเป็นเหตุผลที่ฉันต้องการที่จะเข้าใจสิ่งที่เกิดขึ้นภายใต้ประทุน
orodbhen

2

ฉันเชื่อว่าฉันได้พบคำตอบคร่าวๆอย่างน้อยตามที่อธิบายในการอัปเดตสำหรับโพสต์ดั้งเดิมของฉัน ที่จริงแล้วมีวิธีแก้ไขปัญหาสองข้อที่ฉันพบ แต่ฉันแน่ใจว่ามีวิธีอื่น ๆ

1 - ด้วย Prime ในโหมด Intel ให้เปิดใช้งานการ์ด NVIDIA อีกครั้งผ่านทางbbswitchจากนั้นเรียกใช้modprobe nvidiaเพื่อโหลดโมดูลและสร้างโหนดอุปกรณ์

2 - ใช้ Bumblebee optirun เพื่อเปิดเซสชัน bash จากที่ซึ่งคุณสามารถทำทุกสิ่งใน CUDA ของคุณ

โซลูชันทั้งสองนี้ช่วยให้คุณสามารถใช้กราฟิกออนบอร์ดสำหรับการแสดงผลของคุณในขณะที่ใช้การ์ด NVIDIA สำหรับการคำนวณโหลด โซลูชัน optirun นั้นมีประโยชน์มากกว่า แต่ฉันชอบอันแรกสำหรับความเรียบง่าย

ฉันหวังว่าคนที่มีความเข้าใจมากขึ้นจะได้คำตอบนี้ดีขึ้น


คุณสามารถอธิบายตัวเลือกแรกได้ชัดเจนยิ่งขึ้น? คุณเปิดและปิดการ์ดโดยใช้ bbswitch อย่างไร
Abonec

ฉันคิดวิธีการทำงานของ bumblebee ดีและฉันจะปรับปรุงคำตอบของฉันเมื่อฉันได้เวลา ฉันเป็นพื้นตามนี้ มันน่าหงุดหงิดที่สิ่งนี้มีเอกสารไม่ดีนักเพราะมันค่อนข้างง่าย
orodbhen

2

ฉันใช้การ์ด NVIDIA สำหรับการประหารชีวิต CUDA เท่านั้นและค้นหาวิธีการนี้:

ตลอดเวลาที่ฉันใช้การ์ด Intel และได้รับการยืนยันโดยคำสั่ง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)

ในแถวที่สอดคล้องกันสำหรับการ์ด NVIDIA คุณควรเห็น(rev ff)ว่ามันปิดอยู่

ในการเปิดการ์ดและใช้สำหรับการคำนวณ CUDA ฉันใช้สองคำสั่งต่อไปนี้:

sudo prime-select nvidia
sudo prime-switch

หลังจาก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 a2)

แจ้งให้ทราบเกี่ยวกับ(rev a2)ไม่ได้(rev ff)อยู่ในแถวที่เกี่ยวข้อง ตอนนี้การ์ดพร้อมที่จะคำนวณ

หลังจากการคำนวณฉันใช้การกระทำย้อนหลัง:

sudo prime-select intel
sudo prime-switch

และ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)

ดังนั้นโดยพื้นฐานแล้วคุณจะต้องลงชื่อเข้าใช้อีกครั้งหลังจากเปลี่ยนเป็น Prime หากคุณต้องการสลับ GPU ที่ใช้งานจอแสดงผล ฉันไม่ได้คิดอย่างนั้น แต่มันก็สมเหตุสมผล แน่นอนคุณต้องแน่ใจว่าคุณเปลี่ยนกลับมาก่อนออกจากระบบหรือรีสตาร์ท
orodbhen

ฉันใช้วิธีนี้ ฉันเข้าสู่ระบบโดยใช้โปรไฟล์ Intel เพื่อให้ Xorg และ firefox ไม่ได้ใช้ GPU จากนั้นฉันเปลี่ยนไปใช้โปรไฟล์ nvidia และงาน CUDA ของฉันทั้งหมดแล้วไปที่ GPU และไม่ต้องแข่งขันกับ firefox และ Xorg เพื่อความจำ :)!
John

0

ในกรณีที่บางคนยังพบปัญหาหลังจากทำตามขั้นตอนในคำตอบที่ยอมรับลองสิ่งนี้:

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

มันจะปิดการใช้งาน bbswitch โดยสิ้นเชิง ข้อเสียคือคุณจะไม่สามารถปิดการ์ด NVIDIA สำหรับการประหยัดพลังงาน (Xorg ยังคงใช้กราฟิกแบบรวมตราบใดที่prime-select intel)


0

ฉันใช้ 1,070 ti กับ thinkpad T420 ใน egpu ที่ตั้งค่าเป็น crypto-currency ของฉันในขณะที่ฉันทำงานอยู่ ในทางทฤษฎี GPU จะจ่ายเองหลังจากสองสามเดือนด้วยวิธีนี้

ฉันพบว่าด้วยการส่งออก nvidia 387 LD_LIBRARY_PATH = / usr / lib / nvidia-387 ทำงานกับ ethminer โดยใช้ cuda

อย่างไรก็ตามวิธีเดียวที่ฉันจะทำให้ระบบทำงานต่อไปหลังจาก "ตัวเลือกนายก" คือถ้าฉันมีจอภาพที่สองเสียบเข้ากับการ์ดเมื่อฉันทำการเลือกและออกจากระบบ มิฉะนั้นฉันจะได้รับข้อผิดพลาด "ระบบกำลังทำงานในโหมดกราฟิกต่ำ" หรือหน้าจอว่างเปล่าอย่างต่อเนื่อง แน่นอนว่าเมื่อฉันลงชื่อเข้าใช้ด้วยกราฟิก Intel จอภาพที่เสียบเข้ากับ GPU ไม่แสดงอะไรเลยดังนั้นฉันต้องถอดปลั๊กออกจาก gpu และเสียบกลับเข้าไปในระบบ (เอาต์พุต DVI dock) เพื่อเรียกใช้การตั้งค่าจอแสดงผลดวล .

ฉันเชื่อว่าเป็นเพราะ gpu-manager ตรวจพบว่า bbswitch ไม่ทำงานและลบการกำหนดค่า xorg

ฉันกำลังโพสต์สิ่งนี้เพื่อแสดงวิธีแก้ปัญหาสำหรับคนไม่กี่คนที่อาจตกอยู่ในสถานการณ์ที่คล้ายคลึงกัน แต่ยังดูว่าใครมีความคิดที่จะหยุดสิ่งนี้ไม่ให้เกิดขึ้นได้ ความไม่สะดวก

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 ไม่สามารถเข้าถึงไฟล์ / รัน / udc-fglrx-was-load ได้กำลังมองหาไฟล์ fglrx ใน / lib /modules/4.4.0-104-generic/updates/dkms กำลังมองหาโมดูล nvidia ใน /lib/modules/4.4.0-104-generic/updates/dkms พบโมดูล nvidia: nvidia_387_drm.ko โมดูล nvidia ถูกโหลดหรือไม่? ใช่ถูกยกเลิกการโหลด nvidia หรือไม่ nvidia ถูกขึ้นบัญชีดำหรือไม่ ใช่โหลด fglrx หรือไม่ ไม่ได้โหลด fglrx หรือไม่ ไม่มี fglrx ขึ้นบัญชีดำหรือไม่ ไม่โหลด Intel หรือไม่ ใช่โหลด radeon หรือไม่ ไม่มีบัญชีดำ Radeon หรือไม่ ไม่โหลด amdgpu หรือไม่ ไม่ amdgpu ขึ้นบัญชีดำหรือไม่ ไม่มีนูโวโหลดหรือไม่ ไม่ได้อยู่ในบัญชีดำของนูโว ใช่มีโมดูลเคอร์เนล fglrx หรือไม่ ไม่มีเคอร์เนลโมดูล nvidia ให้บริการหรือไม่ ใช่รหัสผู้ขาย / อุปกรณ์: 8086: 126 BusID "PCI: 0 @ 0: 2: 0" บูต vga หรือไม่ ใช่รหัสผู้ขาย / อุปกรณ์: 10de: 1b82 BusID "PCI: conf ทางเลือก core ปัจจุบัน: (null) ทางเลือก egl ปัจจุบัน: /usr/lib/nvidia-387-prime/ld.so.conf nvidia เปิดใช้งานหรือไม่ nvidia egl เปิดใช้งานหรือไม่ ไม่มี fglrx เปิดใช้งานหรือไม่ ไม่เปิดใช้งาน mesa หรือไม่ mesa egl เปิดใช้งานหรือไม่ pxpress ไม่ได้เปิดใช้งานหรือไม่ ไม่เปิดใช้งานเฉพาะหรือไม่ ใช่เปิดใช้งาน egl สำคัญหรือไม่ มี nvidia หรือไม่ ใช่มี nvidia egl ให้บริการหรือไม่ ไม่มี fglrx ให้บริการหรือไม่ ไม่มี fglrx-core ให้บริการหรือไม่ ไม่มี mesa หรือไม่ ใช่ mesa egl ให้บริการหรือไม่ ใช่ pxpress ใช้ได้ไหม? ไม่มีไพรมใช้ได้หรือไม่ ใช่มี egl ที่สำคัญหรือไม่ ไม่พบ Intel IGP ตรวจพบระบบไฮบริดของ Intel ไดรเวอร์ Nvidia รุ่น 387.34 ตรวจพบ / sys / คลาส / dmi / id / product_version = "ThinkPad T420" / sys / คลาส / dmi / id / product_name = "4236L23" ลองครั้งแรกด้วย bbswitch โดยไม่มีคำถาม "load_state = -1 unload_state = 1" พารามิเตอร์ข้อผิดพลาด: สามารถ ' ไม่เปิด / proc / acpi / bbswitch การลบ xorg.conf เส้นทาง: /etc/X11/xorg.conf ไม่สามารถเข้าถึง /usr/share/gpu-manager.d/hybrid-power-saving ไม่จำเป็นต้องเปลี่ยนสถานะ bbswitch ปัจจุบัน

ถ้าฉัน nano xorg.conf หลังจากนี้มันว่างเปล่า ฉันโพสต์สิ่งนี้หลังจากทำเคล็ดลับการสลับจอแสดงผลด้วยการขุดที่เกิดขึ้นในพื้นหลังและ xorg.conf ของฉันยังคงว่างเปล่า ดังนั้นฉันเดาว่าด้วยเหตุผลบางอย่างเมื่อฉันเสียบปลั๊กจอภาพไว้กับ GPU เมื่อ lightdm รีสตาร์ทมันไม่สำคัญว่า xorg.conf ของฉันจะถูกลบ ความคิดใด ๆ


นอกจากนี้ ... ฉันมี bbswitch บัญชีดำตามที่แนะนำข้างต้นเพราะฉันจะได้รับข้อผิดพลาดอย่างต่อเนื่องกับมันในการบูต ฉันสามารถบูตเข้าสู่โหมด intel โดยใช้ nvidia-384 ครั้งหรือสองครั้ง แต่ฉันมีปัญหาในการทำเหมืองด้วยและคิดว่าอาจเป็นเพราะ 1070 ti รองรับเพิ่มด้วย nvidia-387
nhorning
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.