cudaModuleLoadData失败,错误代码为201

时间:2016-10-24 07:32:16

标签: c++ cuda gpu

我有一个我想在GPU上执行的ptx代码。我使用以下代码:

CUmodule cudaModule;

//the variable that stores the error associated with cuda API calls.
CUresult cudaErrorVariable;

//variable representing any cuda kernel function.
CUfunction CUDAPipelineKernel;

//initializing cuda driver
cudaErrorVariable = cuInit(0);

//checking for error while loading ptx code in CUmodule.
if(cudaErrorVariable != CUDA_SUCCESS){
    myLogger->error("Unable to initialize CUDA driver");
    return 1;
}

//loading the ptx code into the module.
cudaErrorVariable = cuModuleLoadData(&cudaModule, PTXCode);

//checking for error while loading ptx code in CUmodule.
if(cudaErrorVariable != CUDA_SUCCESS){
    cuGetErrorString(cudaErrorVariable, (const char **)&errorString);
    myLogger->error("Unable load ptx file into the module : CUDA Error {}", cudaErrorVariable);
    return 1;
}

cuModuleLoadData函数返回错误代码201.我不知道此错误代码的含义。有人可以帮我识别错误吗?

2 个答案:

答案 0 :(得分:2)

以下是cuInit的链接,这是在任何cuda驱动程序API调用之前调用的第一个也是最重要的函数,如文档中所述。

为了完整性,这里是上下文创建的链接:cuCtxCreate

您也可以使用Primary context,其灵感来自cuda samples目录中的6_Advanced/ptxjit示例,该目录是使用cudaMalloc初始化的。

  

主要上下文在每个设备上都是唯一的,并与CUDA共享   运行时API。这些功能允许与其他库集成   使用CUDA。

答案 1 :(得分:1)

正如您在相关的documentation中看到的,错误201是CUDA_ERROR_INVALID_CONTEXT,这意味着您在尝试加载模块之前没有正确设置上下文。