Hi, I have encountered some weird issues in conditionals (if and else) inside a device function.
I am trying to execute a program where it’s structured as the following:
for(int i=0; counter < LIMIT && i < MAXITERATIONS_ALLOWED; ++i){
Variable solution;
if (condition 1)
update solution
if (condition 2)
update solution
else
counter++;
}
If I execute with this manner, it’s taking quite slow to complete (8-30 seconds overall)
So I was wondering what’s going on inside the parallel world, and I commented out from if (condition 2) to the end. Now it’s taking more than 250 seconds to execute!! Does this mean that I need to use syncthreads() in somewhere between this code snippet? Or is this some compiler optimization issue?
Thank you.