我的问题是 卸载区域的代码可以包含c ++对象吗?还是只是STL?
答案 0 :(得分:1)
#pragma offload
from intel C++ Compiler XE 13.1的文档列出了对已卸载语句没有限制。
类别可能需要添加#pragma offload_attribute (push, target (mic))
,例如来自offload_attribute reference的示例:
指定在协处理器之后可以使用pragma之后声明的所有函数和变量。该pragma仅适用于英特尔®MIC架构。
fileB.cpp
#pragma offload_attribute (push,target(mic)) #include "fileA.h"
class B : public A {
...
};
#pragma offload_attribute (pop)
但同时书Intel Xeon Phi Coprocessor High Performance Programming(由Jim Jeffers和James Reinders,Morgan Kaufmann编写,ISBN 9780124104143)表示在“Pragma Offload”模式中“可以调用C ++函数,但是C ++类不能被转移“和
这种对复杂或非复杂数据结构的关注使我们能够精确地指定需要传输到协处理器和从协处理器传输的数据块。当然,未交换的数据没有任何限制,可以是任意复杂的,包括多维数组,任何类型的C ++类,以及使用指针,数组和结构的任何数据结构组合。
在“共享VM模型”中没有这样的限制,您可以使用MIC侧的类并从MIC访问它们。