我如何使英特尔TBB库在Xeon Phi上可用

How do I make intel TBB libraries available on Xeon Phi

本文关键字:Phi Xeon 库在 何使 英特尔 TBB      更新时间:2023-10-16

我正试图在Xeon Phi卸载代码的一部分中使用英特尔TBB。代码编译失败,错误为error : *MIC* cannot open source file "tbbparallel_for.h"

我已经安装了MPSS堆栈,我运行了binutils.msi实用程序,我在卸载的代码文件的顶部包含如下:

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

为什么会失败?

我需要做些什么来卸载并成功运行我的代码?

编辑:

-tbb选项添加到"MIC卸载编译器的附加选项"后,编译器发现了<tbbparallel_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]);
});

卸载编译器基本上由两个(非常)不同的编译器组成,它们分别在同一代码上调用。它们通常都有自己的命令行、include和库路径;并不是所有的命令行选项都从主机转换为MIC编译器。在TBB的情况下,编译器有一个特殊的选项/Qtbb-tbb,它负责两个编译器的所有路径。

关于如何使用卸载区域的TBB,请参考tbbexamplesGettingStartedSUB_STRING_FINDERsub_string_finder_extended.cpp。并查看Makefile以了解如何构建示例。

为了从MSVC环境运行代码,您需要设置与用于构建GettingStartedSub_string_finder示例的Intel Compiler相同的环境。在MSVC中复制环境的简单方法是从示例工作的同一个控制台窗口运行它:

devenv/useenv

或者具体地说,您需要将MIC_LD_LIBRARY_PATH环境变量设置为指向MIC TBB二进制文件,如下所示,用于其他库。