CUDA device compute modes
Enumerator:
cudaComputeModeDefault
cudaComputeModeExclusive
cudaComputeModeProhibited
官方解释
3.5. Compute Modes
在运行Windows Server 2008和更高版本或Linux的Tesla解决方案上,可以使用NVIDIA的系统管理界面(nvidia-smi)将其设置为以下三种模式之一,从而将系统中的任何设备设置为驱动程序的一部分:
-
默认计算模式(Default ):多个主机线程可以同时使用该设备(通过使用运行时API时,可以在此设备上调用cudaSetDevice(),或者在使用驱动程序API时,通过使当前上下文成为与设备关联的上下文)。
-
独占进程计算模式(Exclusive):跨系统中所有进程的设备上只能创建一个CUDA上下文。 在创建该上下文的过程中,该上下文可能是当前所需要的尽可能多的线程。
-
禁止的计算模式(Prohibited):无法在设备上创建CUDA上下文。
特别是,这意味着如果设备0处于禁止模式或独占进程模式并被另一个process使用,则使用运行时API且未显式调用cudaSetDevice()的主机线程可能与设备0以外的设备相关联。 处理。 cudaSetValidDevices()可用于从设备的优先列表中设置设备。
还要注意,对于具有Pascal架构及更高版本(具有6和更高主版本号的计算能力)的设备,存在对Compute Preemption的支持。 这样一来,就可以以指令级的粒度来抢占计算任务,而不是像以前的Maxwell和Kepler GPU架构那样以线程块的粒度来抢占先机,其好处是可以防止内核运行时间长的应用垄断系统或导致系统超时。 但是,将存在与计算抢占相关的上下文切换开销,该开销在存在支持的那些设备上自动启用。 具有属性cudaDevAttrComputePreemptionSupported的单个属性查询函数cudaDeviceGetAttribute()可用于确定使用中的设备是否支持Compute Preemption。 希望避免与不同进程相关联的上下文切换开销的用户可以通过选择独占进程模式来确保GPU上只有一个进程处于活动状态。
应用程序可以通过检查computeMode设备属性来查询设备的计算模式(请参阅设备枚举)。
网友评论