I have come across the word "warp" in a few places but haven't seen a thorough definition (there's no Wikipedia page on it either).
A brief definition is found here:
In the SIMT paradigm, threads are automatically grouped into 32-wide bundles called warps. Warps are the base unit used to schedule both computation on Arithmetic and Logic Units (ALUs) and memory accesses. Threads within the same warp follow the SIMD pattern, i.e. they are supposed to execute the same operation at a given clock cycle...
Another definition is found here:
In a SIMT execution, some number of threads will be combined into a single group (called a “warp” in NVIDIA parlance, and a “wavefront” by AMD; for brevity, we will use the term “warp” hereafter). These threads will execute in lockstep, each executing the same instruction simultaneously.
Wondering if one could describe in more detail what warps are exactly, and how you should be using them or thinking about them when doing parallel / GPU programming. They seem to be mentioned in relation to some optimizations. An example is from the second link:
...efficiently mapping tree traversals on GPUs requires carefully scheduling those traversals so that traversals that are grouped together into the same warp are as similar as possible.
Then later:
The CPU then uses this information to dynamically reorder the traversals so that when the second kernel is called, threads grouped into warps perform similar work, improving SIMT efficiency.
I'm wondering how many warps there are, where they are, how to use them (like can you use them in WebGL through some API, or is it just the way you organize memory).