首页 文章

如何在Xeon Phi上提供intel TBB库[关闭]

提问于
浏览
0

我想在一段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

为什么这会失败?

我需要更改为卸载并成功运行我的代码?

EDIT :

-tbb 选项添加到"Additional Options for MIC Offload Compiler"之后,编译器找到了 <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 回答

  • 1

    卸载编译器基本上由两个(非常)不同的编译器组成,这些编译器在相同的代码上单独调用 . 它们中的每一个通常都有自己的命令行,包含和库路径;并非所有命令行选项都从主机转换为MIC编译器 . 对于TBB,编译器有特殊选项 /Qtbb 或只有 -tbb ,它负责两个编译器的所有路径 .

    有关如何从卸载区域使用TBB,请参阅 tbb\examples\GettingStarted\SUB_STRING_FINDER\sub_string_finder_extended.cpp . 并查看 Makefile 以了解如何构建示例 .

    为了从MSVC环境运行代码,您需要设置与用于构建GettingStarted \ Sub_string_finder示例的英特尔编译器相同的环境 . 在MSVC中复制环境的简单方法是从示例工作的同一控制台窗口运行它:

    devenv / useenv

    或者,具体来说,您需要将 MIC_LD_LIBRARY_PATH 环境变量设置为指向MIC TBB二进制文件,如here for other libraries所示 .

相关问题