CUDAには1Grid10秒までという制限がある。1GridというのはCPUからGPUを呼び出す単位であり、要するにGPUに投げる処理は10秒未満で終わるサイズに抑えなさいということである。忘れていると嵌るので注意が必要である。
ちなみに、nvccを用いてコンパイルする際に-D_DEBUGを付けておき、__global__関数実行後にCUT_CHECK_ERRORを呼び出せば、timeoutによるエラーが検出できる。活用すべし。
では大きな問題を解きたい場合にはどうすればよいかというと、問題を分割しろということらしい。うーむ、スマートではない。どこか、例えばドライバインストール時などにこの制限を弄れないのだろうか?