Hello forum,
I am trying to understand the meaning of warp divergence rate metric in streamline for G-715 GPU.
Using the below test case and I was expecting the divergence rate metric to show up around 50% assuming the warp size on the GPU is 16 and local size is set 16, and only 8 threads are executing either if or else block. But the streamline shows Warp divergence of 98% and Full warp rate 100 and Number fragment warps 2 warps. Any insights on why the divergence is close to 100% would be appreciated. (I am launching the test with global size of X=16, Y=1, Z=1)
#version 320 eslayout(std430, binding = 0) buffer OutputBuffer { float data[];};layout(local_size_x = 16, local_size_y = 1, local_size_z = 1) in;void main() { uint threadId = gl_LocalInvocationID.x; if (threadId > 8u) { for(int i=0; i<64; i++) { data[threadId] = data[threadId] + float(threadId) * 2.0; } } else { for(int i=0; i<64; i++) { data[threadId] = data[threadId] + float(threadId) * 5.0; } }}