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

qoffload-attribute-target、Qoffload-attribute-target

コンパイラーは、ソースファイル中のプロシージャーとデータ・オブジェクトにオフロード属性 target(mic) のフラグを付けます。このオプションは、インテル® Xeon Phi™ 製品をターゲットとする場合にのみ適用されます。

アーキテクチャーの制限

インテル® Xeon Phi™ 製品をターゲットとする場合にのみ利用できます。

構文

Linux*:

-qoffload-attribute-target=target-name

macOS*:

なし

Windows*:

/Qoffload-attribute-target:target-name

引数

target-name

特定のターゲット。利用可能な値は mic のみです。

デフォルト

オフ

コンパイラーは、ソースファイル中のプロシージャーとデータ・オブジェクトにオフロード属性 target(mic) のフラグを付けません。

説明

このオプションは、ソースファイル中のプロシージャーとデータ・オブジェクトにオフロード属性 target(mic) のフラグを付けます。

このオプションは、必要な個々の ATTRIBUTES OFFLOAD:MIC ディレクティブを使用して、ソースファイル内のすべてのプロシージャーとデータ・オブジェクトに target(mic) 属性を付けるのと似ています。

ソースに埋め込まれた個々の ATTRIBUTES OFFLOAD:MIC ディレクティブは、このオプションよりも優先されます。

IDE オプション

なし

代替オプション

なし

以下に、[q または Q]offload-attribute-target オプションの使用例を示します。モジュール変数 t_glob はホストでのみ更新され、モジュール変数 t_priv はターゲットでのみ更新されます。[q または Q]offload-attribute-target オプションを使用してすべてのグローバル・プロシージャーとグローバル変数に target(mic) 属性のフラグが付けられるため、ホストとターゲットの両方で利用可能なグローバル・プロシージャーとグローバル変数に対して、ソースで個別に ATTRIBUTES ディレクティブを追加する必要はありません。


t.F90
=========
program sample
  use m, only : t_glob, glob_func
  integer :: i
  !dir$ offload target(mic) out(i, t_glob)
  i = glob_func()
  write(*, '( "main: t_glob = ",i0," i = ",i0)' ) t_glob, i
end program sample

m.F90
=========
module m
  integer :: t_glob = 65
  public :: glob_func
  integer :: t_priv = 43
  private  :: priv_func, t_priv
contains
  integer function priv_func ()
!   ターゲットでのみインクリメント
#   ifdef __MIC__
      t_priv = t_priv + 1
#   endif
      priv_func = t_priv / 2
  end function priv_func
  integer function glob_func ()
      integer :: j
      j = priv_func()
      write(*, '( "glob_func: t_priv = ",i0," j = ",i0)' ) t_priv, j
!   ターゲットでのみインクリメント#
    ifdef __MIC__
      t_glob = t_glob + 1
#   endif
      glob_func = t_glob / 2
  end function glob_func
end module m

次のようにコマンドラインでソースをコンパイルします。

Linux*:


$ ifort -c m.F90 -qoffload-attribute-target=mic
$ ifort m.o t.F90 -o t.exe

Windows*:


$ ifort /c m.F90 /Qoffload-attribute-target:mic
$ ifort m.obj t.F90 /exe:t.exe

t.exe の出力は次のようになります。

glob_func: t_priv = 44 j = 22
main: t_glob = 66 i = 33

関連情報