main_taskを解決するために複数のデバイス間でサブタスクをスケジュールするアルゴリズムがあります。カーネルをすべてのコマンドキューにエンキューし、コールバックを使用してイベントをアタッチします。このコールバックでは、main_taskが完了したかどうかを確認し、完了していない場合は、もう1つのサブタスクをキューに入れます。それ以外の場合は、共有変数is_main_task_done
をに設定しtrue
て、サブタスクのエンキューを停止する必要があることを他のコマンドキューに通知します。
is_main_task_done
その間、に設定されるまで、ホストのメインスレッドが終了しないようにする必要がありtrue
ます。クロスプラットフォームソリューションはありますか?これまでのところ、AMDのガイドでスピンロックソリューションのみを見つけました。
while (!is_main_task_done)
sleep(0)
ただし、Windowsでのみ機能するようです。