Я искал причину, но не повезло. Он не работает по такой простой программе:Cuda Неизвестная ошибка (ErrNo: 30) on cudaMalloc()
#include <iostream>
using namespace std;
int main() {
int* n;
cout << cudaMallocManaged(&n, 4 * sizeof(int)) << endl;
return 0;
}
Код возврата: 30, неизвестная ошибка. cudaMalloc
также не работает с тем же кодом.
Это мое оборудование:
$ lspci | grep NV
01:00.0 3D controller: NVIDIA Corporation GF117M [GeForce 610M/710M/820M/GT 620M/625M/630M/720M] (rev a1)
$ nvidia-smi
Sat Mar 7 14:02:04 2015
+------------------------------------------------------+
| NVIDIA-SMI 331.113 Driver Version: 331.113 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 NVS 5200M Off | 0000:01:00.0 N/A | N/A |
| N/A 53C N/A N/A/N/A | 279MiB/1023MiB | N/A Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Compute processes: GPU Memory |
| GPU PID Process name Usage |
|=============================================================================|
| 0 Not Supported |
+-----------------------------------------------------------------------------+
Я использую Ubuntu 14.10, с помощью CUDA 6.0 из официального репозитория (надеюсь, если Ubuntu не испортить его).
Это лаборатория Lenovo T430s, карта находится на Optimus, так что это может вызвать некоторые проблемы. Я тестировал на другой машине, и работает тот же код.
Update 1
OK, nvidia_uvm
не загружается ...
$ lsmod |grep nv
nvidia 10744914 65
nvram 14362 1 thinkpad_acpi
drm 310919 6 i915,drm_kms_helper,nvidia
$ sudo modprobe nvidia_uvm
modprobe: ERROR: ../libkmod/libkmod-module.c:816 kmod_module_insert_module() could not find module by name='nvidia_331_updates_uvm'
modprobe: ERROR: could not insert 'nvidia_331_updates_uvm': Function not implemented
Update 2
ОК, я переустановил NVidia-331-обновления-УВМ и модуль был загружен.
$ lsmod | grep nv
nvidia_uvm 34855 0
nvidia 10744914 66 nvidia_uvm
nvram 14362 1 thinkpad_acpi
drm 310919 6 i915,drm_kms_helper,nvidia
Однако код по-прежнему возвращает ошибку 30.
Update 3
После некоторого более тестирования (в основном пытались работает как корень), теперь я получаю ошибку 71: операция не поддерживается. Однако, если я просто использую cudaMalloc
, то это удалось. Я также проверю, поддерживает ли мое устройство унифицированную адресацию памяти.
Update 4
OK, моя карта поддерживает только SM 2.1, поэтому он не поддерживает единую память.
Вы запускаете свою программу с помощью 'optirun', например' optirun./A.out'? – rutsky
Нет, я * не * использую шмелю, но nvidia-prime использует карту NVidia. –
Загружен ли модуль ядра nvidia_uvm? Что находится в 'lsmod | Выход grep nv'? – rutsky