Xcode 4.5 и OpenMP с Clang (Apple LLVM) используют только одно ядро

Мы используем 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.

6

Решение

лязг не все же поддерживает OpenMP (он не был удален — он никогда не существовал в первую очередь). Вы можете использовать систему задач Apple Grand Central Dispatch (GCD) или Intel Threading Строительные блоки (TBB) вместо этого.

11

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector