0

OpenCL 仕様を読みましたが、グローバル ID の割り当て方法がわかりませんでした。EnQueue 時に割り当てられますか、それとも実行時に割り当てられますか?

後で、ID が小さいワークアイテムは、ID が大きいワークアイテムよりも (同じワープ内の場合) 常に早く実行されるか、同時に実行されることが容易にわかります。EnQueue 時間に割り当てられた場合、実行順序がグローバル ID と一致することを保証できますか?

4

1 に答える 1

3

ワークグループが実行される順序について OpenCL には保証がないため、アルゴリズムはそれに依存するべきではありません。

そのような仮定がどのように失敗するかの具体例を示すために、データ依存ブランチを持つカーネルを想像してください。あるワークグループではブランチの両側を使用する必要がある場合がありますが、別のワークグループでは片側だけを使用する必要があります。前者と同時に開始された場合でも、後者のワークグループが最初に完了します。

于 2012-08-24T23:26:05.107 に答える