我尝试运行示例脚本examples/nn_cudamat.py
并examples/rbm_cudamat.py.py
包含在最新版本的 CUDAmat 中,它包装了 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()
运行良好,但最后给出异常。
CUDA矩阵。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 页面上提出了问题,但没有任何解决方案。
那么为什么会这样呢?
一些信息: Linux2
Cuda Toolkit 5.0 上
的最新版本的 CUDAmat(文档说 0.3)
Python 2.6.6
[GCC 4.4.6 20120305(Red Hat 4.4.6-4)]