2015-01-20 2 views
0

Intel C++ 15.0 컴파일러를 사용하여 Visual Studio 2012에서 가속기 (openMP 4.0) 용으로 openMP를 사용하려고합니다. 나는 #pragma omp target 라인을 언급 할 때 물론가속기 용 OpenMP 4.0 : Nvidia GPU 대상

#include <stdio.h> 
#include<iostream> 
#include <omp.h> 

using namespace std; 

int main(){ 
    #pragma omp target 
    #pragma omp parallel for 
     for (int i=0; i<1000; i++) 
      cout<<"Hello world, i am number "<< i <<endl; 
    } 

이 모든 것이 잘 진행 :

내 가속기는이 코드는 컴파일되지 않습니다 엔비디아 지포스 GTX 670

입니다. 내가 OpenMP의에서 가속기로

내가 도착하면 다음과 같은 오류 및 경고입니다 (내 시스템에 잠재적 인 가속기의 수를 반환해야합니다 예를 들어 omp_get_num_devices() 기능) 4.0 표준 관련 아무것도 할 때

나는 같은 문제를 얻을 수 :

error #10340: problem encountered when performing target compilation 
error : *MIC* cannot open source file "stdio.h" 

warning #10362: Environment configuration problem encountered. Please check for proper MPSS installation and environment setup. 

인해 *MIC* 태그에, 여기 내 이론 : 인텔 컴파일러 (인텔 MIC 가속기 용) MIC 응용 프로그램을 구축을 위해 노력하고 유효한 가속기로 내 엔비디아 GPU를 허용하지 않습니다 기본적으로. 이게 얼마나 가능성이 있니? 그것은 내 VS 프로젝트 속성에서 관리 할 수있는 것입니까?

더 심각한 문제가 있습니다. OpenMP 4.0이 Nvidia GPU를 가속기로 지원합니까? (나는 OpenACC가 그 목적으로 만들어 졌음을 알고 있지만 경제적 인 이유 때문에 내가 할 수있는 evry OpenMP 기능을 사용하고 싶다.)

어떤 도움을 주실 분은 정말 감사하겠습니다.

+0

OpenCL 또는 CUDA를 사용해야합니다. –

+0

GCC 5.0은이 http://www.phoronix.com/scan.php?page=news_item&px=GCC-5-Offloading-How-To를 지원합니다. –

답변

1

첫 번째 질문 : ICC는 오프 로딩을 위해 인텔 MIC 만 지원합니다. 따라서 OpenMP 4.0과 ICC를 함께 사용하여 Nvidia GPU를 프로그래밍 할 수는 없습니다.

내 지식이 오래되었지만 Nvidia GPU를 대상으로하는 유일한 OpenMP 4.0 컴파일러는 Cray 컴파일러이며 Cray는 클러스터와 함께 판매됩니다. 어쩌면 PGI 컴파일러가 OpenMP 4.0을 지원할 수도 있지만, 그건 자연스러운 추측입니다. 어쨌든이 컴파일러는 Windows 플랫폼에서 지원되지 않습니다.

0

OpenMP 4.0은 Nvidia GPU를 가속기로 지원합니다. 특정 컴파일러에서 OpenMP를 구현할 수 있는지 여부를 알고 싶습니다. 그리고 MSVC (뒤에서 인텔 컴파일러를 사용하는 경우에도)가 붙어 있다면 대답은 '아니오'입니다. 당신은 this을 체크 아웃 할 수 있지만 그것이 clang과 어떻게 작동하는지 확인하십시오.

관련 문제