0

我正在尝试在一段至强融核卸载代码中使用英特尔 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

为什么会失败?

我需要更改什么才能成功卸载和运行我的代码?

编辑 :

-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]);
});
4

1 回答 1

1

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

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

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

开发环境/使用环境

或者具体来说,您需要将MIC_LD_LIBRARY_PATH环境变量设置为指向 MIC TBB 二进制文件,如此处所示的其他库

于 2014-06-20T16:13:47.140 回答