我正在尝试在Xeon Phi卸载代码段中使用英特尔TBB。代码无法编译,错误为error : *MIC* cannot open source file "tbb\parallel_for.h"
我安装了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
为什么这会失败?
我需要更改为卸载并成功运行我的代码吗?
编辑:
将“{1}}选项添加到”MIC卸载编译器的附加选项“后,编译器找到了-tbb
文件,但它提供了一些警告和有关tbb库代码未标记为共享的错误。以下是我的卸载代码段。
<tbb\parallel_for.h>
答案 0 :(得分:1)
卸载编译器基本上由两个(非常)不同的编译器组成,这些编译器在相同的代码上单独调用。它们中的每一个通常都有自己的命令行,包含和库路径;并非所有命令行选项都从主机转换为MIC编译器。在TBB的情况下,编译器具有特殊选项/Qtbb
或仅-tbb
,它负责两个编译器的所有路径。
有关如何从卸载区域使用TBB,请参阅tbb\examples\GettingStarted\SUB_STRING_FINDER\sub_string_finder_extended.cpp
。并查看Makefile
了解如何构建示例。
为了从MSVC环境运行代码,您需要设置与用于构建GettingStarted \ Sub_string_finder示例的英特尔编译器相同的环境。在MSVC中复制环境的简单方法是从示例工作的同一控制台窗口运行它:
或者具体而言,您需要将MIC_LD_LIBRARY_PATH
环境变量设置为指向MIC TBB二进制文件,如here for other libraries所示。