GPU中的grid,block对应到具体的硬件执行问题

看网上说grid–block—thread对应到硬件就是GPU–SM—SP。
现在有疑问,想知道具体的grid–block是如何调度到SM和SP上的。
比如我创建了一个grid和32个block.我的硬件是8个SM和8个SP、
那现在我的32个block是自动的一个一个的平均分配到每个SM和SP上呢?
还是说我可以有办法指定他们运行在所有的SM中的个别SM?
就是类似与CMP的线程绑定的概念、
可以指定block或者warp在部分核上运行么?如果可以怎么实现啊?