I would like to know how warps are affected to a specific warp scheduler. the documentation says that warps of a block are statically affected to the warp schedulers. In the Pascal architecture there is 4 schedulers. So, if an SM has no warp and a block of 4 warps is scheduled to this SM each scheduler will have 1 warp. But, how does it affect them ?
Is it a round robin like policy (keeping in mind SMP resources). So the warp 0 will be on SMP 0 and warp 4 on SMP 0, …
I guess by “affect” you mean “distribute”
It’s unspecified, as far as I know.
Yes, i mean “distribute”.
So, it we got 8 warps. They could be distributed as follow:
- SMP 0 : 0,1; SMP 1 : 2,3; SMP 2 : 4,5; SMP 3 : 6,7
- SMP 0 : 0,4; SMP 1 : 1,5; SMP 2 : 2,6; SMP 3 : 3,7
or maybe a more random policies
I don’t know if its random or what the typical pattern would be. Round robin is a reasonable guess (and something like it is almost certainly the case for the first n warps, where n is the number of SMPs). I’m just saying its not specified AFAIK. Furthermore, unlike with SMs, I don’t know of a way to identify which SMP a warp is on. There is probably some clever inferential sideband microbenchmarking method, but I have not come across it.