インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
このトピックは、インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーをターゲットとする場合にのみ適用されます。
仮想共有メモリーを使用したオフロードコードには次の制約があります。
ホスト CPU スレッドは同時に複数実行できますが、コードのセクションをオフロードするのは 1 つのホスト CPU スレッドです。この場合、ロック、アトミック、ミューテックス、OpenMP* atomic 操作、OpenMP* critical、OpenMP* taskwait、OpenMP* barrier などの同期メカニズムは、ホスト CPU コードとコプロセッサーにオフロードされたコードとの間では動作しません。ただし、ホスト CPU の並列化が OpenMP* を使用して行われている場合、OpenMP* 並列領域の一部がコプロセッサーにオフロードされている場合でも、OpenMP* 並列領域の最後の同期は保証されます。
CPU で実行するコード内およびコプロセッサーで実行するコード内で例外処理が行われた場合、CPU の例外を CPU で扱い、コプロセッサーの例外をコプロセッサーで扱うことは可能ですが、コプロセッサーの例外を CPU で扱うことはできません。
メモリーの割り当てと解放を行う仮想共有メモリークラスは、標準の割り当ておよび解放 API の代わりに、_Offload_shared_malloc() と _Offload_shared_free()、または _Offload_shared_aligned_malloc() と _Offload_shared_aligned_free() API を使用する必要があります。
サンプルは、install-dir/Samples/en_US/C++/mic_samples/LEO_tutorial を参照してください。
独自のメモリー割り当てと解放を行うクラスを提供する Standard Template Libraries (STL) は、上記の _Offload_shared_* 固有 API を使用するように変更されていない限り、現在 _Cilk_shared と一緒に使用できません。
共有仮想メモリー・プログラミングでは、ランタイム型情報 (RTTI) はサポートされていません。特に、dynamic_cast<> と typeid() の使用はサポートされていません。