Scheduling individual threads

Is there a way to order the thread execution on an individual basis like if I want to schedule threads 1 to 32 to run on one core at the same time and then from 33 to 64. Is there a way to do that? There will be some data which would common to threads from a specific ID range and I want those threads to execute together.


CUDA threads in the same block are required to run in the same multiprocessor, which means they all see the same 16 kB shared memory area and the same texture and constant cache. Is that what you are asking?

I was asking if one can go one step further than the blocks. When 32 threads in a warp are executing on a single MP is there a way to specify which threads (identified by their ids) would in that warp?

Threads are assigned to warps in a deterministic, sequential manner. 0-31 goes to one warp, 32-63 goes to another warp, etc. There is no way to change that.

The desktop notion of cores which are independent does not really apply to a CUDA device in a meaningful way at any finer granularity than a multiprocessor.


Its all in the hardware. U can’t touch it. Nothing is documented.

Although, the scheduling of blocks was reasonably found by some developers in this forum and documented in another thread. – but that can change any time NVIDIA wants. Be aware and dont use such tweaks in your code.

Also, the working of a WARP is also reasonably documented and understood by developers. Not sure if this is clearly mentioned in programming guide or user manual.

Search the forum to know more (Use google search to search forums like this “xxxx site:”)

Best Regards