I am confused about the relationship between execution context and warp. I think a warp corresponds to one execution context, but here says a CUDA thread corresponds to one execution context. Can anyone explain?
jrgallag
A warp contains many execution contexts for multiple threads, not just one. A warp is a group of CUDA threads (like a "gang" in ISPC) that are all running simultaneously using SIMD execution units. So every thread has its own execution context, but many threads run on a warp simultaneously (32 threads/warp on modern hardware).
Here's part of a comment from @kayvonf: " It would be reasonable to think about a warp like a traditional x86 thread executing a SIMD instruction stream, and a warp execution context to be the state required to manage all of those CUDA threads."
I am confused about the relationship between execution context and warp. I think a warp corresponds to one execution context, but here says a CUDA thread corresponds to one execution context. Can anyone explain?
A warp contains many execution contexts for multiple threads, not just one. A warp is a group of CUDA threads (like a "gang" in ISPC) that are all running simultaneously using SIMD execution units. So every thread has its own execution context, but many threads run on a warp simultaneously (32 threads/warp on modern hardware).
There's more about this on Slide 71.
Yup you got it!
Here's part of a comment from @kayvonf: " It would be reasonable to think about a warp like a traditional x86 thread executing a SIMD instruction stream, and a warp execution context to be the state required to manage all of those CUDA threads."