3

OpenCL API を介して実行中の OpenCL カーネルを強制終了する方法はありますか? 仕様には何も見つかりませんでした。

私が思いつく唯一の解決策は、1) ホストがカーネルを停止したいときに書き込むカーネル内のフラグを定期的にチェックするか、2) 別のプロセスでカーネルを実行してプロセス全体を強制終了することです。どちらも非常にエレガントなソリューションではないと思います。また、#1 が確実に機能するかどうかもわかりません。

4

1 に答える 1

1

いいえ、OpenCL API では、実行中のカーネルを中断することはできません。一部のシステムでは、数秒以上実行されているカーネルがドライバーによって強制終了されます。

参考文献 Windows の場合: WDDM による GPU のタイムアウト検出と回復、および Linux+NVidia の場合: CUDA と X の使用

標準には、オプション 1 が機能することを保証するものは何もありません。ほぼ確実にそうはなりません。オプション 2 は機能しますが、他のプロセスと通信する必要があります。

コメントで提案されているように、カーネルを小さなカーネルに分割することがおそらく最良のオプションです。

于 2013-05-12T22:23:23.970 に答える