我一直在尝试使用bootstrap实现类似键盘的小部件.
这是对手头问题的重建:
<div>
<div class="row">
<span class="col-md-3">
<button class="btn btn-lg btn-warning">1</button>
<button class="btn btn-lg btn-warning">2</button>
<button class="btn btn-lg btn-warning">3</button>
</span>
</div>
<div class="row">
<span class="col-md-3">
<button class="btn btn-lg btn-warning btn-block">SPAN</button>
</span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这样的问题是标记为1,2和3的按钮没有均匀展开以填充3列宽父级.
现在,我知道btn-group-justified
我可以使用类,但它会拉伸按钮以适合父级的宽度.我想要的是在按钮之间添加填充物.
可以使用Bootstrap完成,或者我应该使用display: table
或一些涉及边距的奇怪的巫毒代码.
我试图向CUDA的新手解释全球记忆.我想出了以下虚拟内核,它阻止其他warp中的其他线程,直到选定的warp将全局变量设置为另一个值:
__global__ void with_sync()
{
while (threadIdx.x / 32 != 0)
{
if (is_done != 0)
{
break;
}
}
if (threadIdx.x / 32 == 0)
{
is_done = 1;
printf("I'm done!\n");
}
}
Run Code Online (Sandbox Code Playgroud)
变量is_done
在函数外部声明为__device__ __managed__ int
(如果我错了,请纠正我,意味着变量将驻留在全局内存空间中).
但是,当我执行此内核(单个块中的1024个1D线程)时,如下所示:
with_sync<<<1, 1024>>>();
cudaDeviceSynchronize();
Run Code Online (Sandbox Code Playgroud)
I'm done
按预期打印出来.但是,CUDA程序没有终止(我cudaDeviceSynchronize()
在主机代码中放置它等待所有线程).这让我想知道其他warp是否没有收到is_done
变量的变化.但是,据我所知,全局内存意味着可以在设备级别(即至少是网格中的所有块)中看到该值.
我的问题如下:CUDA是否有任何缓存/优化使得这种不一致的全局内存视图可以发生?有没有办法从驻留在全局内存中的变量访问"最新"值?