「barrier」の版間の差分

提供: Tommy6
移動: 案内検索
(ページの作成: {{Pathnav|OpenCL|OpenCLマニュアル|OpenCL C 言語|組み込み関数|同期関数}} {{関数| void barrier (cl_mem_fence_flags ''flags'') }} {{翻訳| プロ...)
 
14行: 14行:
 
[[ローカルメモリ|ローカル]]もしくは[[グローバルメモリへ]]のメモリ操作の順序の正しさを保証するため、[[barrier]]() はメモリフェンス(読み込みおよび書き込み)を挿入します。
 
[[ローカルメモリ|ローカル]]もしくは[[グローバルメモリへ]]のメモリ操作の順序の正しさを保証するため、[[barrier]]() はメモリフェンス(読み込みおよび書き込み)を挿入します。
  
''flags'' はメモリアドレス空間を指定し、以下の値を組み合わせて設定できます。
+
''flags'' はメモリアドレス空間を指定する引数で、以下の値を組み合わせて設定できます。
 
* CLK_LOCAL_MEM_FENCE - [[barrier]]() 関数は、ローカルメモリに保存されている変数のフラッシュもしくはローカルメモリへのメモリ操作の順序の正しさを保証するためのメモリフェンスを挿入します。
 
* CLK_LOCAL_MEM_FENCE - [[barrier]]() 関数は、ローカルメモリに保存されている変数のフラッシュもしくはローカルメモリへのメモリ操作の順序の正しさを保証するためのメモリフェンスを挿入します。
 
* CLK_GLOBAL_MEM_FENCE - [[barrier]]() 関数は、グローバルメモリへのメモリ操作の順序の正しさを保証するためのメモリフェンスを挿入します。これはたとえば、ワークアイテムが[[メモリオブジェクト|バッファ]]あるいは[[イメージオブジェクト]]への書き込みを行い更新されたデータを読み込みたいようなときに有用です。
 
* CLK_GLOBAL_MEM_FENCE - [[barrier]]() 関数は、グローバルメモリへのメモリ操作の順序の正しさを保証するためのメモリフェンスを挿入します。これはたとえば、ワークアイテムが[[メモリオブジェクト|バッファ]]あるいは[[イメージオブジェクト]]への書き込みを行い更新されたデータを読み込みたいようなときに有用です。

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

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 より翻訳