yohhoyの日記

技術的メモをしていきたい日記

2014-02-01から1ヶ月間の記事一覧

java.util.concurrent.Phaser同期プリミティブ

Java 7で追加された java.util.concurrent.Phaser*1 同期プリミティブについてメモ。Phaser(フェイザー)クラスは、Java 1.5からあるCountDownLatchやCyclicBarrierを機能的に包含し、さらに汎用化したスレッド同期プリミティブである。CountDownLatch, Cyc…

OpenMPタスクとロック操作関数

OpenMP 3.0以降が提供するロック操作関数では、ロック所有権はスレッドではなく “タスクにより所有” される。一方で、ベース言語が提供するロック操作*1ではロック所有権が “スレッドにより所有” されるため、OpenMPロック操作関数の代替とできないユースケ…

volatile変数とOpenMP flush操作の短い関係

C/C++言語 volatile修飾とOpenMP flush操作の関係についてメモ。要約: OpenMP 2.5以前:volatile変数への読込/書込アクセスは、それぞれ暗黙のOpenMP flush操作を伴う。 OpenMP 3.0以降:volatile変数アクセスはOpenMPメモリモデル(≒Memory Consistency)に…

OpenMP flush操作はデータ競合を解決しない

タイトル通り。OpenMP flush指示文のみ利用では、データ競合(data race)を回避できない。また、OpenMP仕様ではデータ競合発生時の動作を規定せず(unspecified)、ベース言語*1および動作システムの仕様に準じる。OpenMP API Version 4.0仕様*2 1.4 Memory Mod…

atomicコンストラクトの制限

OpenMP API仕様バージョンと、C/C++言語向けatomicコンストラクトの制限事項についてメモ。 OpenMP 3.0以前 #pragma omp atomic new-line expression-stmt atomic指示文に続く式 expression-stmt では、スカラ型の左辺値(lvalue)式 x に対する更新操作のみが…