I’ve searched through the forum and couldn’t find a post on this and thought I’d at least bring it up.
I was under the impression that I had an initialized array in local memory when I performed the following inside a kernel:
float arr[32] = {0.0f};
In retrospect, I was a bit too confident in believing the compiler would allocate it in global memory and initialize it to zero.
It turns out there is still some junk in that array when I actually compute some values.
I do see different behavior between:
float arr[32];
float arr[32] = {0.0f};
and
float arr[32];
for (int i=0; i < 32; i++)
arr[i] = 0.0f;
It resulted in arrays with more to less, to no junk, respectively.
I found this when I was forced to initialize in a loop for a local shared memory implementation, but had it not been for that, I would have been operating with faulty code.
Has anyone else experienced this? Should I do something special to have it actually initialize the array to some value?