0

我尝试运行示例脚本examples/nn_cudamat.pyexamples/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)]

4

0 回答 0