2014-12-05 6 views
0

특정 C++ dll이 Xeon Phi에 멀티 코어를 사용하도록 특별히 제작되지 않았더라도 자동으로 오프로드 할 수 있음을 읽었습니다.Interop을 통해 C++ dll을 사용하여 Xeon Phi로 오프로드 할 수 있습니까?

내 질문 - C#에서 인텔 병렬 스튜디오를 사용하여 빌드 된 C++ dll과 상호 작용할 수 있습니까? 호프팅은 자동 오프

+0

"manycore를 사용하도록 특별히 제작되지 않은 경우에도"는 무엇을 의미합니까? Xeon Phi에 자동 오프로드를 수행 할 수있는 DLL이 있습니다 (예 : 인텔 MKL. 그리고 아마도이 라이브러리들은 C++과 C#으로 링크 될 수 있습니다. –

+0

인텔 스튜디오 및 일부 오픈 소스 컴파일러는 Phi (예 : pragma)를 사용하여 C++를 컴파일 할 수 있습니다. 따라서 명시 적으로 Phi 지원없이 빌드 된 ddl을 C#에서 사용할 수 있는지 묻는 중입니다. HTH –

+0

컴파일러가 C++ 파일을 컴파일 할 때 코드 조각을 식별하여 오프로드 할 수 있습니다. 그런 다음이 코드를 런타임 라이브러리에 대한 일부 호출로 래핑합니다. pragma에 의해 표시되거나 컴파일러에 의해 자동으로 검색되는지에 상관없이 최종 바이너리 (exec 또는 dll)는 동일합니다. 그러나 현재로서는 자동 오프로드를 수행 할 수있는 컴파일러가 없습니다. –

답변

1

인텔 제온 피 (Intel Xeon Phi) 로의 자동 오프로드를 수행 할 수있는 DLL이 있습니다 (예 : Intel MKL. 이 라이브러리들은 C++과 C#으로 링크 될 수 있습니다 (거품의 답 참조).

Automatic offload은 라이브러리에 계산을 오프로드 할 수있는 코드가 사용자에게 공개되어 있다는 것을 의미합니다.

또한 라이브러리에는 CPU 또는 보조 프로세서에서 계산을 실행할지 여부를 결정하는 코드가 포함될 수 있습니다.

2

"Intel Xeon이 코코아를 사용하도록 특별히 고안되지 않은 경우에도"인텔 제온 파이 코 프로세서로 자동 오프로드 할 수있는 DLL에 관한 진술에 혼란 스럽습니다. 자동 오프로드하려면 라이브러리에 오프로드 지시문을 사용하는 코드가 있어야하며 오프로드 지시문을 인식하는 컴파일러로 컴파일해야합니다. 기본적으로 오프로드 지시문은 컴파일러에서 프로세서 및 보조 프로세서 실행 코드를 생성합니다. 동적 라이브러리의

, 언어 확장을 포함하는 모든 소스 파일 :

코드를 오프로드가 포함 된 동적 라이브러리를 구축하는 방법에 관해서는, 나를 케빈 데이비스가 software.intel.com에 게시 회신을 인용하자 오프로드는 -fPIC 컴파일러 옵션으로 컴파일해야합니다. 이 옵션을 IDE의 속성 설정 : 구성 속성> C/C++> 코드 생성 [Intel C++]> MIC 오프로드 컴파일러에 대한 추가 옵션 .... 아래에 추가합니다. icl 명령 줄을 사용하는 경우 각 소스 파일 오프로드 코드가 포함 된 동적 라이브러리의 -fPIC 옵션을 전달하려면/Qoffload-옵션을 사용하여 컴파일해야합니다.

dll에서 _Cilk_offload 지정 문을 사용할 수 없다는 제한이 있지만 그 유일한 제한이라고 생각합니다.

C#에서 offload 지시문을 포함하는 라이브러리를 호출하는 경우 Update 1에서 수정 된 Intel® Parallel Studio XE 2015에 문제가 있습니다.하지만 한 버전의 컴파일러 이외에는 호출 할 수 있어야합니다 오프로드 지시문을 포함하는 동적 라이브러리