メインタスクをそれらに分散するマルチデバイスシステムがあります。各サブタスクは次のもので構成されます。
- 書き込みバッファをエンキューします
- カーネルをエンキューします
- 読み取りバッファをエンキューします
すべてのエンキューは非同期であり、コマンドキューは順番に並んでいます。メインタスクが完了したかどうかを判断するエンキュー読み取りバッファcl_event
のコールバックを割り当てます。そうでない場合は、キューにもう1つのサブタスクをスケジュールします。
残念ながら、ホストのCPUをビジー状態に保つと、他のデバイス(GPU)からのコールバックを処理できず、ほとんどの場合、ホストは作業に関与しません。アイデアは、メインタスクを完了するために使用するデバイスのリストからホストのCPUを除外することです。