2014-06-20 44 views
0

我正嘗試在至強Phi卸載代碼段中使用英特爾TBB。該代碼失敗,錯誤編譯error : *MIC* cannot open source file "tbb\parallel_for.h"如何使英特爾TBB庫在至強Phi上可用

我已經安裝了MPSS棧,我跑了binutils.msi實用程序,我包括在卸載的代碼文件的頂部如下:

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

爲什麼這失敗?

我需要什麼來改變卸載併成功運行我的代碼?

編輯:

添加-tbb選項了「MIC卸載編譯器的其他選項」後,編譯器已經找到了<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\examples\GettingStarted\SUB_STRING_FINDER\sub_string_finder_extended.cpp瞭解如何使用卸載區域的TBB。請查看Makefile瞭解如何構建示例。

爲了從MSVC環境運行代碼,您需要設置與用於構建GettingStarted \ Sub_string_finder示例的Intel Compiler相同的環境。最簡單的方法複製內部MSVC環境是從同一個控制檯窗口中運行它在示例工作:

devenv /useenv

或者具體而言,您需要設置MIC_LD_LIBRARY_PATH環境變量指向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