インテル® Fortran コンパイラー XE 13.1 ユーザー・リファレンス・ガイド
このトピックは、インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーにのみ適用されます。
ターゲット固有の関数を利用するように、ターゲットで実行する関数とオフロードコードのセクションを記述することができます。
コンパイラーは、コプロセッサー向けのコードを生成するとき、マクロ __MIC__ を定義します。 !DIR$ if defined __MIC__ セクション内にターゲット固有のコードを記述することができます。
!DIR$ OMP OFFLOAD 文に続く文の内部で __MIC__ マクロを使用しないでください。 ただし、宣言子から呼び出されるサブプログラムでこのマクロを使用することはできます。
クラス F32vec の実装は CPU とコプロセッサー専用です。 コプロセッサーで実行する場合、オフロードコードで専用バージョンを使用できます。オフロードに失敗して構造を CPU で実行する場合は、CPU バージョンを使用します。
!DIR$ ATTRIBUTES OFFLOAD : mic :: foo integer function foo() implicit none !DIR$ if defined (__MIC__) foo = 1 ! コードはコプロセッサーで実行中です !DIR$ else foo = 0 ! コードはホストで実行中です !DIR$ endif end function foo program main implicit none ! ローカル変数 integer :: result integer :: foo !DIR$ ATTRIBUTES OFFLOAD : mic :: foo ! ホストで foo を呼び出します result = foo() ! 結果を出力します if ( result ) then write (*,*) "Code ran on coprocessor" else write (*,*) "Code ran on host" end if ! MIC で foo を呼び出します !DIR$ OFFLOAD TARGET(mic) result = foo() ! 結果を出力します if ( result ) then write (*,*) "Code ran on coprocessor" else write (*,*) "Code ran on host" end if end program main