Stiamo usando Xcode 4.5 su un progetto C++ 11 dove si usa OpenMP per accelerare il nostro calcolo:Xcode 4.5 e OpenMP con Clang (Apple LLVM) utilizza un solo core
#pragma omp parallel for
for (uint x=1; x<grid.width()-1; ++x) {
for (uint y=1; y<grid.height()-1; ++y) {
// code
}
}
Anche se l'Activity Monitor spettacoli più thread utilizzati dal programma abbiamo osservato che solo un core viene utilizzato:
abbiamo anche eseguito lo stesso codice su Ubuntu usando GCC 4.7 e abbiamo osservato contesa su tutti i core. Potrebbe essere che il supporto OpenMP sia stato rimosso in Apple LLVM? C'è un'alternativa a OpenMP? Non possiamo passare a GCC poiché utilizziamo le funzionalità di C++ 11.
gcc supporta * un sacco * di funzionalità C++ 11, in particolare la versione 4.7. –
sfortunatamente non sono l'unico sviluppatore su OSX e non voglio supportare GCC 4.7 su ogni sviluppatore. – Pascal
ma il compilatore apple g ++ 4.2.1 supporta openmp, è necessario modificare il compilatore predefinito nelle opzioni di compilazione in GCC 4.2. vedere https://developer.apple.com/library/mac/#documentation/DeveloperTools/gcc-4.2.1/gcc/C-Dialect-Options.html –