Xcode 4.5和带有Clang的OpenMP(Apple LLVM)仅使用一个核心

时间:2012-12-05 09:44:30

标签: c++ xcode clang openmp

我们在C ++ 11项目中使用Xcode 4.5,我们使用OpenMP来加速计算:

#pragma omp parallel for
for (uint x=1; x<grid.width()-1; ++x) {
    for (uint y=1; y<grid.height()-1; ++y) {
         // code
    }
}

虽然活动监视器显示程序正在使用多个线程,但我们发现只使用了一个核心:

Screenshot of the Activity Monitor running my code

我们也使用GCC 4.7在Ubuntu上运行相同的代码,我们观察到所有核心上的争用。是否已在Apple LLVM中删除了OpenMP支持?有没有替代OpenMP? 由于我们使用C ++ 11功能,因此无法切换到GCC。

1 个答案:

答案 0 :(得分:11)

Clang 尚未支持OpenMP(它尚未删除 - 它从未存在过)。您可以使用Apple的Grand Central Dispatch(GCD)任务系统,也可以使用英特尔的Threading Building Blocks(TBB)。