Xcode 4.5 and OpenMP with Clang (Apple LLVM) uses

2019-04-28 23:24发布

问题:

We are using Xcode 4.5 on a C++11 project where we use OpenMP to speed up our computation:

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

Although the Activity Monitor shows multiple threads being used by the program we observed that only one core is used:

We also run the same code on Ubuntu using GCC 4.7 and we observed contention on all cores. Could it be that the OpenMP support has been removed in the Apple LLVM? Is there an alternative to OpenMP? We can't switch to GCC since we use C++11 features.

回答1:

Clang does not yet support OpenMP (it has not been removed - it never existed in the first place). You could use Apple's Grand Central Dispatch (GCD) tasking system or you could use Intel's Threading Building Blocks (TBB) instead.