直到什么时候才能确切设置CUDA设备的主要上下文调度策略?

问题描述

我想为CUDA设备(的主要上下文)设置调度策略。

在阅读Runtime API guide时,我注意到:

如果已设置了当前设备并且该设备已经初始化,则此调用将失败,并显示错误cudaErrorSetonActiveProcess在这种情况下,必须先使用cudaDeviceReset()重置设备,然后才能设置设备的初始化标志。

设置当前设备-我理解。但是,对设备进行“初始化”到底意味着什么?我如何避免它被“初始化”?

注意:this问题是相关的。

解决方法

这似乎意味着设备主上下文的初始化。例如

cuDevicePrimaryCtxRetain(&pc,device_id);

应该这样做,以便您不能再设置该策略。这是有道理的,因为对于其他上下文,您还要在上下文创建时设置一次这样的策略。