我尝试运行最新版本的CUDAMat中包含的示例脚本examples/nn_cudamat.py
和examples/rbm_cudamat.py.py
,它包装了CUDA的cublas库,并为gpu计算提供了一个Python矩阵类。
两个示例都运行良好,但完成了多个例外,例如:
Exception cudamat.CUDAMatException: CUDAMatException('CUBLAS error.',) in <bound method CUDAMatrix.__del__ of <cudamat.CUDAMatrix object at 0xf27290>> ignored
安装后没有运行鼻子测试的失败。
我不确定导致错误的确切原因,但似乎在创建cm.cublas_shutdown()
对象的脚本末尾调用cm.CUDAMatrix
时会发生。
例如:
import numpy as np
import cudamat as cm
cm.cublas_init()
cm.cublas_shutdown()
退出罚款但是:
import numpy as np
import cudamat as cm
cm.cublas_init()
a = cm.CUDAMatrix(np.random.rand(5, 5))
print a.asarray()
cm.cublas_shutdown()
运行正常,但最后会给出例外。
CUDAMatrix。 del 释放与矩阵对应的设备内存,如下所示:
extern int free_device_memory(cudamat* mat) {
if (mat->owns_data && mat->on_device) {
cublasStatus stat;
stat = cublasFree(mat->data_device);
mat->on_device = 0;
if (stat != CUBLAS_STATUS_SUCCESS || check_cublas_error())
return CUBLAS_ERROR;
}
return 0;
}
和cm.cublas_shutdown()执行以下操作:
extern int cublas_shutdown() {
cublasShutdown();
cudaThreadExit();
return 0;
}
其他人遇到同样的问题,并且在一段时间内在CUDAMat页面上制作了issue,但没有任何解决方案。
为什么会发生这种情况?
一些信息:
最新版本的CUDAMat(文档说0.3)
Python 2.6.6
[gCC 4.4.6 20120305(Red Hat 4.4.6-4)] on linux2
Cuda Toolkit 5.0