0

メインタスクをそれらに分散するマルチデバイスシステムがあります。各サブタスクは次のもので構成されます。

  1. 書き込みバッファをエンキューします
  2. カーネルをエンキューします
  3. 読み取りバッファをエンキューします

すべてのエンキューは非同期であり、コマンドキューは順番に並んでいます。メインタスクが完了したかどうかを判断するエンキュー読み取りバッファcl_eventのコールバックを割り当てます。そうでない場合は、キューにもう1つのサブタスクをスケジュールします。

残念ながら、ホストのCPUをビジー状態に保つと、他のデバイス(GPU)からのコールバックを処理できず、ほとんどの場合、ホストは作業に関与しません。アイデアは、メインタスクを完了するために使用するデバイスのリストからホストのCPUを除外することです。

4

1 に答える 1

2

デバイスの核分裂を調べる必要があります。プラットフォームがこの機能をサポートしている場合は、CPUコアの任意の組み合わせでopenclデバイスを作成できます。詳細はこちらをご覧ください。この拡張機能を使用すると、ホストアプリケーション用にいくつかのコアを保存できます。

さまざまなレベルのキャッシュメモリを共有するサブデバイスを作成できる方法が気に入っています。CL_DEVICE_PARTITION_BY_NAMES_EXTに興味があるかもしれません(ページで「CL_DEVICE_PARTITION_BYNAMES_EXT」を検索してください)。

于 2012-04-19T10:59:17.257 に答える