Мы используем Xcode 4.5 в проекте C ++ 11, где мы используем OpenMP для ускорения наших вычислений:
#pragma omp parallel for
for (uint x=1; x<grid.width()-1; ++x) {
for (uint y=1; y<grid.height()-1; ++y) {
// code
}
}
Хотя Activity Monitor показывает несколько потоков, используемых программой, мы заметили, что используется только одно ядро:
Мы также запускаем тот же код в Ubuntu, используя GCC 4.7, и мы наблюдали конфликты на всех ядрах. Может ли быть так, что поддержка OpenMP была удалена в Apple LLVM? Есть ли альтернатива OpenMP?
Мы не можем переключиться на GCC, так как мы используем функции C ++ 11.
лязг не все же поддерживает OpenMP (он не был удален — он никогда не существовал в первую очередь). Вы можете использовать систему задач Apple Grand Central Dispatch (GCD) или Intel Threading Строительные блоки (TBB) вместо этого.
Других решений пока нет …