Để gỡ lỗi mã CUDA và kiểm tra tính tương thích, tôi cần tìm hiểu phiên bản trình điều khiển nvidia cho GPU mà tôi đã cài đặt. Tôi tìm thấy Làm thế nào để tải phiên bản cuda? nhưng điều đó không giúp tôi ở đây.
Để gỡ lỗi mã CUDA và kiểm tra tính tương thích, tôi cần tìm hiểu phiên bản trình điều khiển nvidia cho GPU mà tôi đã cài đặt. Tôi tìm thấy Làm thế nào để tải phiên bản cuda? nhưng điều đó không giúp tôi ở đây.
Câu trả lời:
Sử dụng nvidia-smi
sẽ cho bạn biết rằng:
bwood@mybox:~$ nvidia-smi
Mon Oct 29 12:30:02 2012
+------------------------------------------------------+
| NVIDIA-SMI 3.295.41 Driver Version: 295.41 |
|-------------------------------+----------------------+----------------------+
| Nb. Name | Bus Id Disp. | Volatile ECC SB / DB |
| Fan Temp Power Usage /Cap | Memory Usage | GPU Util. Compute M. |
|===============================+======================+======================|
| 0. GeForce GTX 580 | 0000:25:00.0 N/A | N/A N/A |
| 54% 70 C N/A N/A / N/A | 25% 383MB / 1535MB | N/A Default |
|-------------------------------+----------------------+----------------------|
| Compute processes: GPU Memory |
| GPU PID Process name Usage |
|=============================================================================|
| 0. Not Supported |
+-----------------------------------------------------------------------------+
nvidia-smi
như vậy:locate nvidia-smi
lspci
. Ví dụ: stackoverflow.com/questions/10310250/…
Trên bất kỳ hệ thống linux nào có cài đặt và tải trình điều khiển NVIDIA vào hạt nhân, bạn có thể thực thi:
cat /proc/driver/nvidia/version
để tải phiên bản của mô-đun nhân NVIDIA hiện đang được tải, ví dụ:
$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 304.54 Sat Sep 29 00:05:49 PDT 2012
GCC version: gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
nvidia-smi
là:Failed to initialize NVML: GPU access blocked by the operating system
Failed to initialize NVML: Driver/library version mismatch
từ nvidia-smi
.
modinfo
thực hiện thủ thuật.
root@nyx:/usr/src# modinfo nvidia|grep version:
version: 331.113
nvidia_XXX
tương ứng với loạt trình điều khiển chính mà tôi đã cài đặt và vì modinfo
không hỗ trợ ký tự đại diện hoặc khớp tên một phần nên tôi phải thực hiện việc này modinfo $(find /lib/modules/$(uname -r) -iname nvidia_*.ko | head -1) | grep ^version:
để trả về phiên bản trình điều khiển chính và phụ chính xác.
modinfo
có --field
tùy chọn dòng lệnh. Vì vậy, bạn có thể bỏ qua grep: modinfo nvidia --field version
. Ngoài ra, trong ubuntu 16.04, điều này dường như không hoạt động. Tôi luôn luôn nhận được ERROR: Module nvidia not found
.
[LƯU Ý: Tôi không cố ý xóa câu trả lời của mình, vì vậy mọi người xem cách không thực hiện]
Nếu bạn dùng:
me@over_there:~$ dpkg --status nvidia-current | grep Version | cut -f 1 -d '-' | sed 's/[^.,0-9]//g'
260.19.06
bạn sẽ nhận được phiên bản của gói trình điều khiển nVIDIA được cài đặt thông qua cơ chế đóng gói của phân phối của bạn. Nhưng đây có thể không phải là phiên bản thực sự đang chạy như một phần của hạt nhân của bạn ngay bây giờ.
Để mở rộng câu trả lời của ccc, nếu bạn muốn kết hợp truy vấn thẻ với một tập lệnh, đây là thông tin trên trang web Nvidia về cách thực hiện:
https://nvidia.custhelp.com/app/answers/detail/a_id/3751/~/useful-nvidia-smi-queries
Ngoài ra, tôi tìm thấy chủ đề này đang nghiên cứu về quyền hạn. Đây là một lệnh ví dụ chạy tiện ích để lấy bộ nhớ thực có sẵn trên GPU để giúp bạn bắt đầu.
# get gpu metrics
$cmd = "& 'C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi' --query-gpu=name,utilization.memory,driver_version --format=csv"
$gpuinfo = invoke-expression $cmd | ConvertFrom-CSV
$gpuname = $gpuinfo.name
$gpuutil = $gpuinfo.'utilization.memory [%]'.Split(' ')[0]
$gpuDriver = $gpuinfo.driver_version
Nếu bạn cần lấy điều đó trong một chương trình với Python trên hệ thống Linux để có thể tái tạo:
with open('/proc/driver/nvidia/version') as f:
version = f.read().strip()
print(version)
cho:
NVRM version: NVIDIA UNIX x86_64 Kernel Module 384.90 Tue Sep 19 19:17:35 PDT 2017
GCC version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)