About the relationship between block and stream-multiprocessor

Hello, nv’s experts
I have a problem about the relationship between block and stream-multiprocessor(SM):

  1. the relationship between block and SM is fixed or not, after kernel launched ? can block move from on SM to another SM?
  2. how to bind block to a specific SM?

for example, I have a GPU with 48 SMs, and I have a computation task, I partitioned these tasks into 64 blocks. obviously, these blocks cannot be partitioned evenly among all of SMs. I think some SMs obtain 1 block, and some SMs obtain 2 blocks. Obviously, the task load of these SMs are not evenly. So, I want to specify my blocks into specific SMs.
for example, I can determine different task routines through blockId in kernel if I can create the fixed relationship between block and SM。
I think my guess must based on above two key points which I post at the beginning of this topic。
So, Is there anyone can teach me?

  1. It is not fixed.
  2. That is not possible
1 Like

thank you.