自 Volta 以来,Nvidia 为其 GPGPU 引入了新的独立线程调度。如果 CUDA 线程出现分歧,替代代码路径不会按块执行,而是按指令执行。尽管如此,由于 GPU 也是 SIMT,因此不同的路径无法同时执行。这是这篇文章的原文:
https://developer.nvidia.com/blog/inside-volta/(向下滚动到“独立线程调度”)。
我明白这意味着什么。我不明白的是,这种新行为以何种方式加速代码。即使上面文章中的前后图也没有反映出整体加速。
我的问题:由于所描述的新调度,哪种不同的算法在 Volta(和更新的)上运行得更快?
我有一段串行代码,可以做这样的事情
if( ! variable )
{
do some initialization here
variable = true;
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这在串行中完美无缺,只执行一次.什么原子操作在CUDA中是正确的?