Вы можете просто использовать занятое вращение (без шуток). Просто сделайте поток обработки [32] выполнить:
while(!variable);
перед началом вычисления и обработки потока [31] do
variable = 1;
когда это закончится. Вам решать обобщить это. Я знаю, что это считается "мошенническим программированием" в CUDA, но, похоже, это единственный способ достичь того, чего вы хотите. У меня была очень похожая проблема, и она работала для меня. Ваше выступление может пострадать, хотя ...
Будьте осторожны, однако, что
dim3 threads_perblock(32, 32)
означает, что у вас 32 x 32 = 1024 потоков на блок.