【发布时间】:2015-02-14 23:28:33
【问题描述】:
我正在开发一些 OpenMP 程序,我有以下代码:
#pragma omp parallel sections shared(a, b, r1, r2)
{
#pragma omp section
{
a = 1;
r1 = b;
}
#pragma omp section
{
b = 1;
r2 = a;
}
}
我想在这里观察的主要是r1 = 1或r2 = 1(这是规范允许的)但是我已经运行了这个代码sn-p超过1000000次,我无法观察到它。我得到的唯一结果是r1 = 0, r2 = 1(我希望其中至少有一些是r1 = 1, r2 = 0。我想知道实现是否正在序列化我的程序。我使用omp_set_num_threads(2); 强制两个线程,但我怎么能确保这两个线程实际上是在两个物理内核上运行的(我使用的是双核 Macbook pro,我使用的是 homebrew 安装的 gcc-4.9)。
【问题讨论】:
-
你用-fopenmp编译吗?
标签: multithreading pthreads openmp multicore