使用带有 -r race 标志的 collect 命令来运行程序并在进程执行期间创建数据争用检测实验。对于 OpenMP 程序,确保使用的线程数多于一个。在本教程的样例中,使用了四个线程。
基于通过检测源代码创建的二进制代码创建实验:
% 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 的值提供不同的输入数据,从而使程序执行更多或更少的工作。