ปัญหาเกี่ยวกับไดรเวอร์กราฟิก Nvidia และ CUDA หลังจากอัปเกรด apt-get


9

ก่อนหน้านี้ฉันติดตั้ง CUDA 7.5 บน Ubuntu 14.04 โดยใช้การติดตั้ง "deb (เครือข่าย)" จาก Nvidia มันใช้งานได้สองสามเดือนจนกระทั่งฉันวิ่งsudo apt-get upgradeวันนี้ หลังจากทำสิ่งนี้ฉันพบสิ่งต่อไปนี้

$ nvidia-smi
modprobe: ERROR: ../libkmod/libkmod-module.c:809 kmod_module_insert_module() could not find module by name='nvidia_352'
modprobe: ERROR: could not insert 'nvidia_352': Function not implemented
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

วิ่งsudo nvidia-smiไม่แตกต่างกัน ฉันไม่สามารถเข้าสู่ระบบในโหมด GUI (มันเพิ่งกลับไปที่หน้าจอเข้าสู่ระบบหลังจากที่ฉันป้อนรหัสผ่าน) แต่ฉันสามารถเข้าถึงเทอร์มินัลได้

ฉันสามารถกู้คืนฟังก์ชันการทำงานแบบกราฟิกได้ แต่ฉันมีปัญหาในการติดตั้ง CUDA อีกครั้งหลังจากนั้น คุณช่วยฉันได้ไหม?

การกู้คืนกราฟิก

ฉันพบว่าฉันสามารถทำให้กราฟิกกลับมาทำงานได้อีกครั้งโดยทำ

$ sudo apt-get remove --purge nvidia*
$ sudo apt-get autoremove

แล้วทำการแก้ไข/etc/apt/sources.list.d/cuda.listเพื่อลบบรรทัดทั้งหมดจากนั้นทำ

$ sudo apt-get install nvidia-352

และรีบูตระบบ หลังจากนี้nvidia-smiทำงานอีกครั้ง อย่างไรก็ตามฉันยังต้องติดตั้ง CUDA อีกครั้ง

กำลังพยายามติดตั้ง CUDA อีกครั้ง

ฉันพยายามกู้คืนเนื้อหาของแล้วทำ/etc/apt/sources.list.d/cuda.list sudo apt-get install cudaฉันสังเกตเห็นข้อความแสดงข้อผิดพลาดนี้:

Loading new nvidia-352-352.93 DKMS files...
Building only for 3.13.0-68-generic
Building for architecture x86_64
Building initial module for 3.13.0-68-generic
ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/nvidia-352.0.crash'
Error! Bad return status for module build on kernel: 3.13.0-68-generic (x86_64)

หลังจากทำเช่นนี้ระบบจะกลับสู่ลักษณะการทำงานเมื่อเริ่มต้น ตัวอย่างเช่นnvidia-smiพิมพ์ข้อความแสดงข้อผิดพลาดด้านบนและหลังจากการสร้างและเรียกใช้deviceQueryฉันได้รับข้อผิดพลาดที่คล้ายกัน:

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

modprobe: ERROR: ../libkmod/libkmod-module.c:809 kmod_module_insert_module() could not find module by name='nvidia_352'
modprobe: ERROR: could not insert 'nvidia_352': Function not implemented
cudaGetDeviceCount returned 38
-> no CUDA-capable device is detected
Result = FAIL

ฉันดูเหมือนจะจำได้ว่าเมื่อฉันติดตั้ง CUDA ครั้งแรกมันจะทำงานได้ก็ต่อเมื่อฉันทำโดยไม่ต้องอัปเดตnvidia-352แพคเกจจากที่เก็บของ Nvidia อย่างไรก็ตามตอนนี้ฉันดูเหมือนจะไม่มีตัวเลือกในการทำเช่นนั้นเพราะเมื่อฉันรันsudo apt-get install cudaมันจะอัพเกรดnvidia-352แพ็คเกจโดยอัตโนมัติ:

Unpacking nvidia-352 (352.93-0ubuntu1) over (352.63-0ubuntu0.14.04.1) ...

หากฉันพยายามตั้งค่ารุ่นอย่างชัดเจนฉันจะได้รับ

$ sudo apt-get install cuda-drivers nvidia-352=352.63-0ubuntu0.14.04.1 nvidia-352-dev=352.63-0ubuntu0.14.04.1
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-drivers : Depends: nvidia-352 (>= 352.93) but 352.63-0ubuntu0.14.04.1 is to be installed
                Depends: nvidia-352-dev (>= 352.93) but 352.63-0ubuntu0.14.04.1 is to be installed
E: Unable to correct problems, you have held broken packages.

ความจริงแล้วถ้าฉันลองใช้เวอร์ชั่น352.63-0ubuntu1แทนที่จะ352.63-0ubuntu0.14.04.1ทำ

$ sudo apt-get install nvidia-352=352.63-0ubuntu1

ถ้าอย่างนั้นก็เพียงพอที่จะทำลายการเข้าสู่ระบบกราฟิกและทำให้เกิดnvidia-smiการแสดงข้อผิดพลาดข้างต้น

การวินิจฉัย

$ lspci | grep -i vga
01:00.0 VGA compatible controller: NVIDIA Corporation GM200 [GeForce GTX TITAN X] (rev a1)

$ dpkg -l | grep -i nvidia
ii  bbswitch-dkms                                         0.7-2ubuntu1                                        amd64        Interface for toggling the power on nVidia Optimus video cards
ii  libcuda1-352                                          352.93-0ubuntu1                                     amd64        NVIDIA CUDA runtime library
ii  nvidia-352                                            352.93-0ubuntu1                                     amd64        NVIDIA binary driver - version 352.93
ii  nvidia-352-dev                                        352.93-0ubuntu1                                     amd64        NVIDIA binary Xorg driver development files
ii  nvidia-352-uvm                                        352.93-0ubuntu1                                     amd64        Transitional package for nvidia-352
ii  nvidia-modprobe                                       352.93-0ubuntu1                                     amd64        Load the NVIDIA kernel driver and create device files
ii  nvidia-opencl-icd-352                                 352.93-0ubuntu1                                     amd64        NVIDIA OpenCL ICD
ii  nvidia-prime                                          0.6.2                                               amd64        Tools to enable NVIDIA's Prime
ii  nvidia-settings                                       352.93-0ubuntu1                                     amd64        Tool for configuring the NVIDIA graphics driver

คำตอบ:


6

ฉันมีปัญหาที่คล้ายกัน สามารถแก้ไขได้โดยการติดตั้งไดร์เวอร์ nvidia รุ่นที่แนะนำ

sudo apt-get install ubuntu-drivers-common

sudo ubuntu-drivers devices

sudo apt-get install <recommended version>

3
ฉันต้องออกคำสั่ง "sudo modprobe nvidia" หลังจากคำสั่งข้างต้นแล้วทุกสิ่งก็ทำงาน
MARK

@mark ฉันได้รับข้อผิดพลาดจาก modprobe: ข้อผิดพลาด: ไม่สามารถแทรก 'nvidia_396': คีย์ที่จำเป็นไม่สามารถใช้ได้ เคล็ดลับใด ๆ
Aerin

4

เพื่อนสามารถแก้ปัญหาให้ฉันได้!

ทางออกที่เขาแสดงให้ฉันเห็นคือ (หลังจากลบแพ็คเกจ nvidia ทั้งหมดเหมือนก่อน)

$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt-get install nvidia-364

จากนั้นดาวน์โหลดตัวติดตั้ง. รัน CUDA (สำหรับฉันมันคือ cuda_7.5.18_linux.run) จาก Nvidia และระมัดระวังในการเลือก "ไม่" เมื่อถูกถามว่าคุณต้องการติดตั้งไดรเวอร์ที่บรรจุด้วย CUDA หรือไม่

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