バリア (計算機科学)
並列コンピューティングにおけるバリア(英: barrier)とは、同期方法の一つであり、ソースコード中でスレッドやプロセスがある箇所で停止し、他の全てのスレッドやプロセスがバリアに到達するまで進行しないようなものを示す。
並列計算のライブラリや、命令による並列言語では、暗黙のうちにバリアが使用されることが多い。たとえばOpenMPを使用したFORTRANにおける並列のdoループは、ループ処理の最後の繰り返しが完了するまで次に進まない。これは、プログラムがループの結果に依存しているという例である。メッセージ・パッシングでは、大域的な通信(reductionやscatter)が、暗黙のバリアとなっている場合がある。
CUDA C/C++やOpenCL C/C++、HLSLやGLSLのようなGPGPU向けの並列プログラミング言語にも、GPU上で動作するスレッド同期のための組み込みのバリア関数が用意されている。デバイスコードやコンピュートシェーダーを記述する際に利用される。並列処理する個々の入出力データ間に依存性がなく、すべてのスレッドが完全に独立して動作できる場合は明示的なバリアは不要だが、スレッドグループの共有メモリ(OpenCLの場合はローカルメモリと呼ばれる)に途中の演算結果を一時的に格納してスレッド間でデータを交換・利用する場合には明示的なバリアによる同期が必要となる。