インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

オフロードの開始

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

OFFLOAD ディレクティブを、サブルーチン呼び出し文、x = func() 形式の関数呼び出し文、または OpenMP* parallel ディレクティブの前に配置することができます。

次に例を示します。

  !DIR$ OFFLOAD BEGIN target(mic : target_id) &
                             inout(numEs) in(all_Vals) out(E_vals)
      do k = 1, MAXSZ
         if ( MODULO(all_Vals(k),2) == 0 ) then
             numEs = numEs + 1
             E_vals(numEs) = all_Vals(k)
         endif
      enddo
  !DIR$ END OFFLOAD

このコードブロックは、偶数を検索して配列に格納します。コードブロックの先頭は !DIR$ OFFLOAD BEGIN で、終了は !DIR$ END OFFLOAD です。コンパイラーは、ホストとターゲットの両方で実行するようにコードブロックをビルドします。

ホストとターゲットの命令セットは似ていますが、同じシステムメモリーを共有しません。このため、コードブロックで使用する変数はホストとターゲットの両方に存在していなければなりません。ディレクティブは、指定子を使用してホストとターゲット間でコピーする変数を定義します。

ディレクティブには、複数のターゲットを持つシステムの特定のターゲットを指定する target (mic:target_number) 指定子も含まれています。

メインプログラムにオフロード構造が含まれる場合、デフォルトでは、コンパイラーはホストとターゲットの両方で実行するアプリケーションを生成します。ただし、[Q]offload コンパイラー・オプションを使用して、同じソースコードからホストのみで実行するアプリケーションを生成することもできます。

関連情報