是否可以手动设置用于一个CUDA流的SMs?

是否可以手动设置用于一个CUDA流的SMs?,cuda,nvidia,cudnn,cuda-streams,Cuda,Nvidia,Cudnn,Cuda Streams,默认情况下,内核将使用设备的所有可用SMs(如果有足够的块)。但是,现在我有两个流,一个是计算密集型,一个是内存密集型,我想分别限制两个流使用的最大SMs(设置最大SMs后,一个流中的内核将最多使用最大SMs,如计算密集型为20ms,内存密集型为4SMs),是否可以这样做?(如果可能,我应该使用哪种API)简而言之,没有任何方法可以实现您所设想的 CUDA执行模型没有提供这种粒度,这不是偶然的。通过抽象这一级别的调度和工作分配,这意味着(在合理范围内)可以在给定体系结构中最小的GPU上运行的任何

默认情况下,内核将使用设备的所有可用SMs(如果有足够的块)。但是,现在我有两个流,一个是计算密集型,一个是内存密集型,我想分别限制两个流使用的最大SMs(设置最大SMs后,一个流中的内核将最多使用最大SMs,如计算密集型为20ms,内存密集型为4SMs),是否可以这样做?(如果可能,我应该使用哪种API)

简而言之,没有任何方法可以实现您所设想的


CUDA执行模型没有提供这种粒度,这不是偶然的。通过抽象这一级别的调度和工作分配,这意味着(在合理范围内)可以在给定体系结构中最小的GPU上运行的任何代码也可以在最大的GPU上运行,而无需任何修改。从可移植性和互操作性的角度来看,这很重要。

我不确定您是否可以,但我也不确定您是否愿意。好处是什么?CUDA执行模型没有提供这种粒度,这不是偶然的。通过抽象,这意味着(在合理的范围内)可以在给定体系结构中最小的GPU上运行的任何代码也可以在最大的GPU上运行,而无需任何修改。从可移植性和互操作性的角度来看,这一点很重要。Talonmies的评论确实有助于我的理解。