2012-12-05 4 views
6

우리는 우리가 우리의 계산 속도의 OpenMP를 사용하여 C++ 11 프로젝트 엑스 코드 4.5을 사용하는 경우에만 하나 개의 코어를 사용합니다 여러 스레드가 하나의 코어가 사용된다는 것을 우리가 관찰 프로그램에서 사용되는 보여줍니다 :엑스 코드 4.5 OpenMP는

Screenshot of the Activity Monitor running my code

우리는 또한 GCC 4.7 사용하여 우분투에서 동일한 코드를 실행하고 우리는 모든 코어에 경합을 관찰했다. Apple LLVM에서 OpenMP 지원이 제거 되었습니까? OpenMP에 대한 대안이 있습니까? C++ 11 기능을 사용하기 때문에 GCC로 전환 할 수 없습니다.

+2

gcc는 * 많은 C++ 11 기능, 특히 4.7 버전을 지원합니다. –

+0

불행히도 OSX의 유일한 개발자는 아니며 모든 개발자 컴퓨터에서 GCC 4.7을 지원하고 싶지 않습니다. – Pascal

+0

하지만 Apple g ++ 4.2.1 컴파일러는 openmp를 지원하지 않으므로 빌드 옵션의 기본 컴파일러를 GCC 4.2로 변경해야합니다. https://developer.apple.com/library/mac/#documentation/DeveloperTools/gcc-4.2.1/gcc/C-Dialect-Options.html –

답변

11

Clang 아직은 아직 OpenMP를 지원하지 않습니다 (제거되지 않았으므로 처음부터 존재하지 않았습니다). Apple의 Grand Central Dispatch (GCD) 태스킹 시스템을 사용하거나 Intel의 Threading Building Blocks (TBB)을 대신 사용할 수 있습니다.