The Streaming Users Guide says the Firestream 9170 has 64 threads in a wavefront. Since there are 5 stream cores per thread and 5*64 = 320, does it then follow that all threads on the 9170 are in the same wavefront?
4 threads run on a single SP (5 cores) over 4 cycles. So, all threads within sinlgle SIMD engine (16 SPs) are in the same wavefront.
16 SPs * 4 threads (over 4 cycle) per SP = 64 threads = 1wavefront
Sorry to beat a dead horse, but wouldn't this imply that the 9170 has 4 SIMD engines and thus 4 Wavefronts total? If there are 320 stream cores, and a wavefront contains 64 threads, 4 threads are interleaved on a thread processor, and there are 5 stream cores per thread processor, then there are 64 thread processors, each of which interleaves 4 threads, yielding 256 threads total. Since a wavefront is 64 threads, it would then follow that there are 4 SIMD engines and thus 4 wavefronts. Alternatively, does the 320 stream cores figure in the 4 way thread interleaving, and so there are 320 virtual stream cores, but 80 physical stream cores, in which case there would be only one wavefront?
a 9170 has 4 simd's each with 16 thread processors with 5 stream cores per thread processor, where each stream core can process a single instruction. 5 * 16 * 4 = 320 streaming cores.
a wavefront is run on a simd over 4 cycles and two wavefronts can run in parallel, so 8 wavefronts can run at the same time on the card.
So then the 4 interleaved threads are not necessarily on the same wavefront?
Originally posted by: rick.weber So then the 4 interleaved threads are not necessarily on the same wavefront?
This is a good question but from my understanding they are. The 4 interleaved threads are organized 2x2 called a quad. Each quad is run on 1 thread processor. The wavefront is organized into 16 quads, 1 per thread processor and the wavefront runs on 1 SIMD engine. At least this is how it seems explained in a high view, but this could be different physically speaking.
Is that correct, I am curious also?
that is correct
I guess I'm a little confused about how a second wavefront can be scheduled to run on stream cores if you already have 64 threads running in a wavefront using all 16 of the thread processors. Are the wavefronts interleaved in a manner similar to threads?
Originally posted by: rick.weber I guess I'm a little confused about how a second wavefront can be scheduled to run on stream cores if you already have 64 threads running in a wavefront using all 16 of the thread processors. Are the wavefronts interleaved in a manner similar to threads?
Yes. A wavefront runs for the life of a Clause (or CF Clause, if you will). It is explained in the docs that you can have different instructions running at a time on the GPU, this is because you can have 1 wavefront running in 1 clause (CF Clause) on 1 SIMD and another wavefront running another clause (CF Clause) on another SIMD engine.
Also, take a look at the "Wavefronts Question" and "Another wavefronts question" threads.
Retrieving data ...