Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cuCtxCreate失败,CUDA\u错误\u无效\u设备_Cuda_Cuda Context - Fatal编程技术网

cuCtxCreate失败,CUDA\u错误\u无效\u设备

cuCtxCreate失败,CUDA\u错误\u无效\u设备,cuda,cuda-context,Cuda,Cuda Context,通过cuCtxCreate创建CUDA上下文时,我收到CUDA\u错误\u无效\u设备错误 我的代码是创建一个上下文并从中获取设备,然后创建一个新的上下文 知道我为什么不能创建另一个上下文吗 #include<cuda.h> #include<assert.h> int main(){ cuInit(0); CUcontext ctx; CUdevice device; CUdevice dev2;

通过cuCtxCreate创建CUDA上下文时,我收到CUDA\u错误\u无效\u设备错误

我的代码是创建一个上下文并从中获取设备,然后创建一个新的上下文

知道我为什么不能创建另一个上下文吗

#include<cuda.h>
#include<assert.h>

int main(){
        cuInit(0);
        CUcontext ctx;
        CUdevice device;

        CUdevice dev2;
        CUcontext c2;

        assert(cuDeviceGet(&device,0) == 0 );
        assert(cuCtxCreate(&ctx, 0, device) == 0);
        assert(cuCtxGetDevice(&dev2) == 0);
        assert(cuCtxCreate(&c2,0,dev2) == 0);
        return 0;
}
#包括
#包括
int main(){
cuInit(0);
CUcontext ctx;
CU器件;
cuv2;
c上下文c2;
断言(cuDeviceGet(&device,0)==0);
断言(cuCtxCreate(&ctx,0,设备)==0);
断言(cuCtxGetDevice(&dev2)==0);
断言(cuCtxCreate(&c2,0,dev2)==0);
返回0;
}

问题是用户的设备处于独占模式,这禁止在单个设备上创建两个上下文。

问题是用户的设备处于独占模式,这禁止在单个设备上创建两个上下文。

我很确定
设备==dev2
这里,因此,您可以有效地从单个主机线程为单个设备创建两个上下文。为什么要这样做?两个线程可以在同一设备上创建不同的上下文。那么为什么一个线程不能创建两个不同的上下文呢?我这样做是为了建立一个性能分析f/w。我想创建一个性能分析事件所在的上下文,并且不会因为用户代码破坏上下文而被破坏。您是否已验证设备是否处于独占模式?是的,确实如此。它在一个非独占模式的设备上运行。我很确定这里的
device==dev2
,因此您实际上是从一个主机线程为一个设备创建了两个上下文。为什么要这样做?两个线程可以在同一设备上创建不同的上下文。那么为什么一个线程不能创建两个不同的上下文呢?我这样做是为了建立一个性能分析f/w。我想创建一个性能分析事件所在的上下文,并且不会因为用户代码破坏上下文而被破坏。您是否已验证设备是否处于独占模式?是的,确实如此。它在非独占模式的设备上工作。