2014-06-20 7 views
0

Xeon Phi 오프로드 코드 세그먼트에서 Intel TBB를 사용하려고합니다. 코드는 내가 binutils.msi 유틸리티를 실행, error : *MIC* cannot open source file "tbb\parallel_for.h"Intel TBB 라이브러리를 Xeon Phi에서 사용할 수있게 만드는 방법

내가 MPSS 스택 설치 오류와 함께 컴파일에 실패, 내 다음과 같이 오프로드 코드 파일의 상단은에 포함

#include <offload.h> 
#pragma offload_attribute(push, target(mic)) 
#include <tbb\parallel_for.h> 
#pragma offload_attribute(pop) 
//other includes and code follows 

왜이 작업을 수행 실패?

내 코드를 성공적으로 오프로드하고 실행하려면 무엇을 변경해야합니까?

편집 :

은 "MIC 오프로드 컴파일러에 대한 추가 옵션"에 -tbb 옵션을 추가 한 후 컴파일러가 <tbb\parallel_for.h> 파일을 발견했다 그러나 그것은하지 표시 공유되는 TBB 라이브러리 코드에 대한 몇 가지 경고 및 오류를 제공합니다. 다음은 내 오프로드 된 코드 세그먼트입니다.

#pragma offload target(mic:0) in(nums) out(results) 
tbb::parallel_for<int>(0,ARRAY_SIZE,1,[&](int i) 
{ 
    results[i] = findZero(nums[i]); 
}); 
+1

경로를 포함하도록 헤더의 위치를 ​​추가 했습니까? –

+0

@Captain Obvilous 나는 긍정적이지는 않지만'binutils.msi' 유틸리티가 실행될 때 당신이 말하는 것을 믿습니다. 그렇지 않다면 Xeon Phi에서 어떻게 시도 할 수 있습니까? – Nanos

답변

1

오프로드 컴파일러는 기본적으로 동일한 코드에서 별도로 호출되는 두 가지 (매우) 다른 컴파일러로 구성됩니다. 각각은 일반적으로 자체 명령 줄, 포함 및 라이브러리 경로가 있습니다. 모든 명령 행 옵션이 호스트에서 MIC 컴파일러로 변환되지는 않습니다. TBB의 경우 컴파일러에는 /Qtbb이라는 특수 옵션이 있거나 두 컴파일러의 모든 경로를 처리하는 단지 -tbb이 있습니다.

오프로드 영역에서 TBB를 사용하는 방법은 tbb\examples\GettingStarted\SUB_STRING_FINDER\sub_string_finder_extended.cpp을 참조하십시오. 그리고 예제를 빌드하는 방법은 Makefile을 확인하십시오.

MSVC 환경에서 코드를 실행하려면 GettingStarted \ Sub_string_finder 예제를 작성하는 데 사용되는 인텔 컴파일러와 동일한 환경을 설정해야합니다.

devenv /useenv

을 또는 특히, 당신이 가리 키도록 MIC_LD_LIBRARY_PATH 환경 변수를 설정해야합니다 예제가 작동하는 곳 MSVC 내부의 환경을 복제 할 수있는 쉬운 방법은 같은 콘솔 창에서 실행하는 것입니다 MIC TBB 바이너리는 here for other libraries으로 표시됩니다.

+0

150'공유로 표시된 클래스는 크기가 8의 멀티플이 아닌 기본 클래스를 가질 수 없으며''다중 기본 클래스를 가진 클래스는 공유로 표시되지 않을 수 있습니다 '경고가 정상입니까? – Nanos

+0

이것은 작동하지 않지만 컴파일됩니다. – Nanos

+0

Makefile을 사용하여 컴파일합니까? 예 : 'nmake offload = mic'와 같은 뭔가요? '/ D__TBB_MIC_OFFLOAD/Qdiag-disable : 3335,3440,3441' 명령을 사용하여 오프로드 용으로 빌드하는 데 사용 된 명령 행 키에주의하십시오. – Anton