「barrier」の版間の差分

提供: Tommy6
移動: 案内検索
6行: 6行:
  
 
{{翻訳|
 
{{翻訳|
プロセッサ上で[[カーネル]]を実行するある[[ワークグループ]]内の全ての[[ワークアイテム]]は、全てのワークアイテムが [[barrier]]() を実行するまで、[[barrier]]() の先の処理に進むことができません。ワークグループ内の全てのワークアイテムが、この関数を実行しなければなりません。
+
プロセッサ上で[[カーネル]]を実行する[[ワークグループ]]内の全ての[[ワークアイテム]]は、全てのワークアイテムが [[barrier]]() を実行するまで、[[barrier]]() の先の処理に進むことができません。ワークグループ内の全てのワークアイテムが、この関数を実行しなければなりません。
  
 
[[barrier]]() が条件文中にあるとき、あるワークアイテムが条件文に突入して [[barrier]]() を実行するのであれば、すべてのワークアイテムがその条件文に突入しなければなりません。
 
[[barrier]]() が条件文中にあるとき、あるワークアイテムが条件文に突入して [[barrier]]() を実行するのであれば、すべてのワークアイテムがその条件文に突入しなければなりません。

2011年5月19日 (木) 18:23時点における版

void barrier (cl_mem_fence_flags flags)

プロセッサ上でカーネルを実行するワークグループ内の全てのワークアイテムは、全てのワークアイテムが barrier() を実行するまで、barrier() の先の処理に進むことができません。ワークグループ内の全てのワークアイテムが、この関数を実行しなければなりません。

barrier() が条件文中にあるとき、あるワークアイテムが条件文に突入して barrier() を実行するのであれば、すべてのワークアイテムがその条件文に突入しなければなりません。

barrier() がループ内にあるとき、ループの各繰り返しで全てのワークアイテムが barrier() を実行するまで、barrier() の先の処理に進むことができません。

ローカルもしくはグローバルメモリへのメモリ操作の順序の正しさを保証するため、barrier() はメモリフェンス(読み込みおよび書き込み)を挿入します。

flags はメモリアドレス空間を指定する引数で、以下の値を組み合わせて設定できます。

  • CLK_LOCAL_MEM_FENCE - barrier() 関数は、ローカルメモリに保存されている変数のフラッシュもしくはローカルメモリへのメモリ操作の順序の正しさを保証するためのメモリフェンスを挿入します。
  • CLK_GLOBAL_MEM_FENCE - barrier() 関数は、グローバルメモリへのメモリ操作の順序の正しさを保証するためのメモリフェンスを挿入します。これはたとえば、ワークアイテムがバッファあるいはイメージオブジェクトへの書き込みを行い更新されたデータを読み込みたいようなときに有用です。

変更記録

脚注



―――― Version 1.1, The OpenCL Specification より翻訳