我们在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
}
}
虽然活动监视器显示程序正在使用多个线程,但我们发现只使用了一个核心:
我们也使用GCC 4.7在Ubuntu上运行相同的代码,我们观察到所有核心上的争用。是否已在Apple LLVM中删除了OpenMP支持?有没有替代OpenMP? 由于我们使用C ++ 11功能,因此无法切换到GCC。
答案 0 :(得分:11)
Clang 尚未支持OpenMP(它尚未删除 - 它从未存在过)。您可以使用Apple的Grand Central Dispatch(GCD)任务系统,也可以使用英特尔的Threading Building Blocks(TBB)。