Oracle® Solaris Studio 12.4:线程分析器用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

创建数据争用检测实验

使用带有 -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 的值提供不同的输入数据,从而使程序执行更多或更少的工作。