2014-11-17 3 views
4

나는 다음과 같은 프로그램이 있습니다OpenMP는 omp_set_num_threads를 지원하지 않습니까?

#include <omp.h> 
#include <stdio.h> 
int main() { 
    omp_set_num_threads(4); 
#pragma omp parallel 
    printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads()); 
} 

을 그리고 clang -fopenmp로 컴파일 및 I 출력 분명히 스레드 기능의 설정 번호가 호출되지 않습니다

Hello from thread 0, nthreads 1 

을 얻었다. 누가 이런 일이 일어날 지에 대한 아이디어가 있습니까? (apt-get을 함께 설치)

연타 버전 :

Ubuntu clang version 3.5.0-4ubuntu2 (tags/RELEASE_350/final) (based on LLVM 3.5.0) 
Target: x86_64-pc-linux-gnu 
Thread model: posix 

편집 : 나는 또한 OMP_NUM_THREADS EDIT2

4. 변수 환경을 설정하려 : 나는 또한 OpenMP를위한 인텔 런타임을 설치했습니다.

+0

gcc를 사용하고 있습니까? 그렇다면 어떤 플래그를 넘기고 OpemMP를 사용하기 위해서는'-fopenmp'가 전달되어야합니다. – Mike

+0

no clang, -fopenmp – dorafmon

+0

여기 ** 사용 ** 섹션에 지정된 환경 변수를 내 보냈습니까? http://clang-omp.github.io/ – Mike

답변

0

Mike가 제안한 것처럼 런타임 라이브러리가 잘못된 위치에 연결되는 문제가 있습니다. 내 시스템 (Fedora)에서는 intel의 libiomp 대신 gcc runtime libgomp에 링크되어 있습니다.

실행 파일에서 ldd를 실행하여 확인하십시오. here과 같이 런타임 라이브러리를 빌드 할 때 얻은 라이브러리를 가리켜 야합니다.

0

OpenMP를 사용하려면 최소한 3.7.0의 clang이 필요합니다. 버전 < 3.7.0 OpenMP를 지원하지 않습니다

관련 문제