インテル® C++ コンパイラー XE 13.1 ユーザー・リファレンス・ガイド

プラグマを使用したターゲット固有のコードの記述

このトピックは、インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーにのみ適用されます。

ターゲット固有の組込み関数を利用するように、ターゲットで実行する関数とオフロードコードのセクションを記述することができます。

コンパイラーは、コプロセッサー向けのコードを生成するとき、マクロ __MIC__ を定義します。 #ifdef __MIC__ セクション内にターゲット固有のコードを記述することができます。

#pragma offload 文に続く文の内部で __MIC__ マクロを使用しないでください。 ただし、プラグマから呼び出されるサブプログラムでこのマクロを使用することはできます。

クラス F32vec の実装は CPU とコプロセッサー専用です。 コプロセッサーで実行する場合、オフロードコードで専用バージョンを使用できます。オフロードに失敗して構造を CPU で実行する場合は、CPU バージョンを使用します。

// クラス F32vec はオフロードコードで使用されます
// target(mic) 属性が必要です

#pragma offload_attribute(push,target(mic))

// CPU とコプロセッサー向けにカスタマイズしたバージョンを使用

#ifdef __MIC__

	// このクラスのインテル® MIC アーキテクチャー・バージョンは micvec.h に含まれています
	#include <micvec.h>

#else
	// CPU バージョンはインラインで記述されています
	class F32vec16
	{
  		public:
    		...
    		friend F32vec16 sqrt(const F32vec16& a);
	};
#endif

mysqrt()
{
   #ifdef __MIC__
        F32vec16 w = ...;
        F32vec16 s;
        s = sqrt(w);
   #endif
               ...
}

#pragma offload_attribute(pop)

int main()
{
   #pragma offload target(mic)
     {
        mysqrt(;
     }
     ...
}

関連情報


このヘルプトピックについてのフィードバックを送信