-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 の値を変更して別の入力データを指定すると、プログラム作業量を増減できます。