问题描述
我想为CUDA设备(的主要上下文)设置调度策略。
在阅读Runtime API guide时,我注意到:
如果已设置了当前设备并且该设备已经初始化,则此调用将失败,并显示错误
cudaErrorSetonActiveProcess
。在这种情况下,必须先使用cudaDeviceReset()
重置设备,然后才能设置设备的初始化标志。
设置当前设备-我理解。但是,对设备进行“初始化”到底意味着什么?我如何避免它被“初始化”?
注意:this问题是相关的。
解决方法
这似乎意味着设备主上下文的初始化。例如
cuDevicePrimaryCtxRetain(&pc,device_id);
应该这样做,以便您不能再设置该策略。这是有道理的,因为对于其他上下文,您还要在上下文创建时设置一次这样的策略。