在CUDAMat中调用cm.cublas_shutdown()总是会引发异常

时间:2013-09-12 06:37:36

标签: python gpu

我尝试运行最新版本的CUDAMat中包含的示例脚本examples/nn_cudamat.pyexamples/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

0 个答案:

没有答案