Oracle® Solaris Studio 12.4: スレッドアナライザユーザーズガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

データの競合の検出実験を作成する

-r race フラグを付けて collect コマンドを使用してプログラムを実行し、プロセスの実行中にデータ競合の検出実験を作成します。OpenMP プログラムの場合、使用されるスレッド数が 1 より大きいことを確認してください。チュートリアルの例では 4 つのスレッドが使用されます。

ソースコードを計測して作成したバイナリから実験を作成するには、次のスレッドを使用します。

% collect -r race -o prime_omp_inst.er prime_omp_inst
% collect -r race -o prime_pthr_inst.er prime_pthr_inst

discover ツールを使用して作成したバイナリから実験を作成するには、次のようにします。

% collect -r race -o prime_omp_disc.er prime_omp_disc
% collect -r race -o prime_pthr_disc.er prime_pthr_disc

データの競合を検出する可能性を高めるには、-r race フラグ付きで collect を使用して、複数のデータの競合の検出実験を作成することをお勧めします。実験ごとに異なるスレッド数と異なる入力データを使用してください。

たとえば prime_omp.c では、スレッド数は次の行で設定されます。

#define THREADS 4

この 4 を 1 より大きな他の整数 (たとえば 8) に変えると、スレッド数を変更できます。

prime_omp.c の次の行は、2 ~ 3000 の素数を検出するようにプログラムを制限します。

#define N 3000

N の値を変更して別の入力データを指定すると、プログラム作業量を増減できます。