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