% cc -xopenmp=noopt omp_prime.c -lm -xinstrument=datarace
% collect -r race a.out | sort -n
0
0
0
0
0
0
0
0
0
0
...
0
0
実験データベース test.1.er の作成中 ...
Number of prime numbers between 2 and 3000: 429
2
3
5
7
11
13
17
19
23
29
31
37
41
47
53
59
61
67
71
73
...
2971
2999
% er_print test.1.er
(er_print) races
総競合数: 4 実験: test.1.er
競合 #1, Vaddr: 0xffbfeec4
アクセス 1: 読み取り, main -- 行 42 からの MP doall [_$d1A42.main] + 0x00000060,
行 45 "omp_prime.c"
アクセス 2: 書き込み, main -- 行 42 からの MP doall [_$d1A42.main] + 0x0000008C,
行 46 "omp_prime.c"
総トレース数: 2
競合 #2, Vaddr: 0xffbfeec4
アクセス 1: 書き込み, main -- 行 42 からの MP doall [_$d1A42.main] + 0x0000008C,
行 46 "omp_prime.c"
アクセス 2: 書き込み, main -- 行 42 からの MP doall [_$d1A42.main] + 0x0000008C,
行 46 "omp_prime.c"
総トレース数: 1
競合 #3, Vaddr: (Multiple Addresses)
アクセス 1: 書き込み, main -- 行 42 からの MP doall [_$d1A42.main] + 0x0000007C,
行 45 "omp_prime.c"
アクセス 2: 書き込み, main -- 行 42 からの MP doall [_$d1A42.main] + 0x0000007C,
行 45 "omp_prime.c"
総トレース数: 1
競合 #4, Vaddr: 0x21418
アクセス 1: 読み取り, is_prime + 0x00000074,
行 18 "omp_prime.c"
アクセス 2: 書き込み, is_prime + 0x00000114,
行 21 "omp_prime.c"
総トレース数: 1
(er_print)
次のスクリーンショットは、omp_primes.c で検出された競合の、スレッドアナライザ GUI での表示例です。GUI を呼び出して、実験データを読み込むコマンドは tha test.1.er になっています。

omp_primes.c には、4 つのデータ競合があります。
競合番号 1: 行 45 の total の読み取りと行 46 の total への書き込みとのデータ競合。
競合番号 2: 行 46 の total への書き込みと同一行での total への別の書き込みとのデータ競合。
競合番号 3: 行 45 の primes[] への書き込みと同一行での primes[] への別の書き込みとのデータ競合。
競合番号 4: 行 18 の pflag[] の読み取りと行 21 の pflag[] への書き込みとのデータ競合。