インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
このトピックは、インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーをターゲットとする場合にのみ適用されます。
ターゲット固有の組込み関数を使用するオフロードコードのセクションを記述することができます。コンパイラーは、コプロセッサー向けのコードを生成するとき、マクロ __MIC__ を定義します。#ifdef __MIC__ セクション内にターゲット固有のコードを記述することができます。
この例は、#ifdef __MIC__ セクション内にターゲット固有のコードを記述する方法を示します。
クラス F32vec の実装は CPU とコプロセッサー専用です。コプロセッサーで実行する場合、オフロードコードで専用バージョンを使用できます。function_1 を CPU で実行する場合、クラス F32vec の CPU バージョンを使用します。コプロセッサーで実行する場合、micvec.h の定義を使用します。
// クラス F32vec はオフロードコードで使用されます // target(mic) 属性が必要です #pragma offload_attribute(push,_Cilk_shared) // CPU とコプロセッサー向けにカスタマイズしたバージョンを使用します #ifdef __MIC__ // このクラスのインテル® MIC アーキテクチャー・バージョンは micvec.h に含まれています #include <micvec.h> #else // CPU バージョンはインラインで記述されています class F32vec16 { public: ... friend F32vec16 sqrt(const F32vec16& a); }; #endif #pragma offload_attribute(pop) _Cilk_shared void function_3() { F32vec16 w = ...; F32vec16 s; s = sqrt(w); ... }