私の質問は、オフロード領域のコードに c++ オブジェクトが含まれている可能性がありますか? または単にSTL?
1 に答える
#pragma offload
intel C++ Compiler XE 13.1のドキュメントには、オフロードされたステートメントの制限はありません。
offload_attribute 参照の例のように、クラスにの追加#pragma offload_attribute (push, target (mic))
が必要になる場合があります。
プラグマの後に宣言されたすべての関数と変数がコプロセッサーで使用可能であることを指定します。このプラグマは、インテル® 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) は、「プラグマ オフロード」モードでは「C++ 関数は呼び出される可能性がありますが、C++ クラスは転送できません」と述べています。
フラットな、または複雑でないデータ構造に焦点を当てることで、コプロセッサーとの間で転送する必要があるデータのブロックを正確に指定することができます。もちろん、交換されないデータには制限がなく、多次元配列、任意の型の C++ クラス、およびポインター、配列、および構造体を使用したデータ構造の構成など、任意に複雑にすることができます。
「共有 VM モデル」ではそのような制限はなく、MIC 側でクラスを使用することも、MIC からクラスにアクセスすることもできます。