我如何使英特尔TBB库在Xeon Phi上可用
How do I make intel TBB libraries available on Xeon Phi
我正试图在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二进制文件,如下所示,用于其他库。
- 欧拉斯(Eulers Phi)数量很大
- Xeon phi卸载模式如何利用线程并行性和矢量化
- pthread_create()在Xeon Phi上每60个线程失败一次(参数无效)
- 如果在Xeon Phi上编译时循环计数未知,则性能会降低
- 如何在LLVM IR中检查指令是否为PHI指令
- 是否可以在Intel Xeon Phi上使用std::thread进行并行处理
- 英特尔至强Phi -运行多个单线程可执行程序
- c++ pthread多线程2倍Intel Xeon X5570,四核cpu在亚马逊EC2 HPC ubuntu实例
- 我如何使英特尔TBB库在Xeon Phi上可用
- 应用程序非常适合Xeon-phi多核架构
- 矢量化/优化循环,用于宽寄存器(特别是Xeon Phi)的未对齐数据访问