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

Python 在CUDAMat中调用cm.cublas_shutdown()总是引发异常,python,gpu,Python,Gpu,我试着运行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__

我试着运行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
可以,但是:

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页面上发表了一篇文章,但没有任何解决方案

那么为什么会发生这种情况呢

一些信息:
CUDAMat的最新版本(文档称为0.3)
Python 2.6.6
[GCC 4.4.6 20120305(Red Hat 4.4.6-4)]关于linux2的说明

Cuda Toolkit 5.0

我在这里遇到了同样的错误!您解决问题了吗?我认为这是由于Python的垃圾收集试图在cublas上下文关闭后通过调用CUDAMatrix类的。当我手动删除每个CUDAMatrix对象时,
del matrix
例如,在cublas.shutdown调用之前,没有错误消息。我的问题更简单。cudamat没有正确加载,所以我只是用原始代码替换了cudamat代码,一切正常。删除cudamat.cu行47中的
cudaThreadExit()。他们计划在0.4版中发布,该版本从未出现过日光。
extern int cublas_shutdown() {
    cublasShutdown();
    cudaThreadExit();
    return 0;
}