我有一个我想在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.我不知道此错误代码的含义。有人可以帮我识别错误吗?
答案 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
,这意味着您在尝试加载模块之前没有正确设置上下文。