首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相当于cudaGetErrorString的cuBLAS?

相当于cudaGetErrorString的cuBLAS?
EN

Stack Overflow用户
提问于 2012-10-24 00:38:16
回答 4查看 8.3K关注 0票数 10

CUDA运行时有一个方便的函数cudaGetErrorString(cudaError_t error),它将错误枚举转换为可读的字符串。cudaGetErrorString在许多人用于CUDA错误处理的CUDA_SAFE_CALL(someCudaFunction())宏中使用。

我现在正在熟悉cuBLAS,我想创建一个类似于CUDA_SAFE_CALL for cuBLAS的宏。为了使宏的输出有用,我想要一些类似于cudaGetErrorString in cuBLAS的东西。

cudaGetErrorString() 在cuBLAS中有相当于的东西吗?或者,是否有任何cuBLAS用户编写了这样的函数?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-24 01:36:39

在CUDA 5.0中,假设您安装了示例,有一个文件./ samples /cuda.h/inc/helper_cuda.h具有以下内容:

代码语言:javascript
复制
#ifdef CUBLAS_API_H_
// cuBLAS API errors
static const char *_cudaGetErrorEnum(cublasStatus_t error)
{
    switch (error)
    {
        case CUBLAS_STATUS_SUCCESS:
            return "CUBLAS_STATUS_SUCCESS";

        case CUBLAS_STATUS_NOT_INITIALIZED:
            return "CUBLAS_STATUS_NOT_INITIALIZED";

        case CUBLAS_STATUS_ALLOC_FAILED:
            return "CUBLAS_STATUS_ALLOC_FAILED";

        case CUBLAS_STATUS_INVALID_VALUE:
            return "CUBLAS_STATUS_INVALID_VALUE";

        case CUBLAS_STATUS_ARCH_MISMATCH:
            return "CUBLAS_STATUS_ARCH_MISMATCH";

        case CUBLAS_STATUS_MAPPING_ERROR:
            return "CUBLAS_STATUS_MAPPING_ERROR";

        case CUBLAS_STATUS_EXECUTION_FAILED:
            return "CUBLAS_STATUS_EXECUTION_FAILED";

        case CUBLAS_STATUS_INTERNAL_ERROR:
            return "CUBLAS_STATUS_INTERNAL_ERROR";
    }

    return "<unknown>";
}
#endif

在以前版本的CUDA SDK (示例)中可能有类似之处。如果你问这个问题,这不是回答一个“是内置的东西”的问题,而是在回答你的问题时,“有任何cuBLAS用户写了这样的函数吗?”

票数 10
EN

Stack Overflow用户

发布于 2012-10-24 01:31:15

我仍然很好奇在cuBLAS中是否存在内置的获取错误字符串的方法,但我现在编写了自己的。

根据cuBLAS指南的8.1节,cuBLAS中只有8种类型的cublasError_t值。我打印出来的..。

代码语言:javascript
复制
printf("CUBLAS_STATUS_SUCCESS = %d \n", CUBLAS_STATUS_SUCCESS);
printf("CUBLAS_STATUS_NOT_INITIALIZED = %d \n", CUBLAS_STATUS_NOT_INITIALIZED);
printf("CUBLAS_STATUS_ALLOC_FAILED = %d \n", CUBLAS_STATUS_ALLOC_FAILED);
printf("CUBLAS_STATUS_INVALID_VALUE = %d \n", CUBLAS_STATUS_INVALID_VALUE);
printf("CUBLAS_STATUS_ARCH_MISMATCH = %d \n", CUBLAS_STATUS_ARCH_MISMATCH);
printf("CUBLAS_STATUS_MAPPING_ERROR = %d \n", CUBLAS_STATUS_MAPPING_ERROR);
printf("CUBLAS_STATUS_EXECUTION_FAILED = %d \n", CUBLAS_STATUS_EXECUTION_FAILED);
printf("CUBLAS_STATUS_INTERNAL_ERROR = %d \n", CUBLAS_STATUS_INTERNAL_ERROR);

打印出来:

代码语言:javascript
复制
CUBLAS_STATUS_SUCCESS = 0 
CUBLAS_STATUS_NOT_INITIALIZED = 1 
CUBLAS_STATUS_ALLOC_FAILED = 3 
CUBLAS_STATUS_INVALID_VALUE = 7 
CUBLAS_STATUS_ARCH_MISMATCH = 8 
CUBLAS_STATUS_MAPPING_ERROR = 11 
CUBLAS_STATUS_EXECUTION_FAILED = 13 
CUBLAS_STATUS_INTERNAL_ERROR = 14

获取cuBLAS错误字符串的函数:

代码语言:javascript
复制
const char* cublasGetErrorString(cublasStatus_t status)
{
    switch(status)
    {
        case CUBLAS_STATUS_SUCCESS: return "CUBLAS_STATUS_SUCCESS";
        case CUBLAS_STATUS_NOT_INITIALIZED: return "CUBLAS_STATUS_NOT_INITIALIZED";
        case CUBLAS_STATUS_ALLOC_FAILED: return "CUBLAS_STATUS_ALLOC_FAILED";
        case CUBLAS_STATUS_INVALID_VALUE: return "CUBLAS_STATUS_INVALID_VALUE"; 
        case CUBLAS_STATUS_ARCH_MISMATCH: return "CUBLAS_STATUS_ARCH_MISMATCH"; 
        case CUBLAS_STATUS_MAPPING_ERROR: return "CUBLAS_STATUS_MAPPING_ERROR";
        case CUBLAS_STATUS_EXECUTION_FAILED: return "CUBLAS_STATUS_EXECUTION_FAILED"; 
        case CUBLAS_STATUS_INTERNAL_ERROR: return "CUBLAS_STATUS_INTERNAL_ERROR"; 
    }
    return "unknown error";
}
票数 2
EN

Stack Overflow用户

发布于 2022-07-12 01:43:55

自从CUDA 11.4.2 (2021年9月)以来,终于有了cublasGetStatusNamecublasGetStatusString分别返回cuBLAS错误状态的枚举名称和描述。例如:

cublasGetStatusName( CUBLAS_STATUS_NOT_INITIALIZED )返回"CUBLAS_STATUS_NOT_INITIALIZED“。

cublasGetStatusString( CUBLAS_STATUS_NOT_INITIALIZED )返回“库未初始化”。

https://docs.nvidia.com/cuda/cublas/index.html#cublasGetStatusName

https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#cublas-11.4.2

顺便说一句,rocBLAS提供rocblas_status_to_string,hipBLAS提供hipblasStatusToString

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13041399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档