关于kernel function中有串行化代码的处理?

如果kernel function中有段串行化执行代码,我只希望执行一次,如何能够防止每个线程都去执行一次呢?

我采用的方案是这样的:
if(threadIdx.x==0 && threadIdx.y==0)
{
串行执行的代码…

}
这样串行执行的代码就只会执行一次,但是运行的时候却出现如下的错误:
cudaSafeCall() Runtime API error in file <e:/research/GPU/program/SNN_beta2.0/SN
N_beta2.0//SNN_kernel.cu>, line 145 : the launch timed out and was terminated.

有没有哪个兄弟知道这是怎么回事啊?