インテル® Fortran コンパイラー 16.0 ユーザー・リファレンス・ガイド
コンパイラーは、ソースファイル中のプロシージャーとデータ・オブジェクトにオフロード属性 target(mic) のフラグを付けます。このオプションは、インテル® MIC アーキテクチャーにのみ適用されます。-qoffload-attribute-target は、古いオプション -offload-attribute-target の後継オプションです。
インテル® MIC アーキテクチャーをターゲットとするインテル® 64 アーキテクチャーでのみ利用できます。
Linux*: | -qoffload-attribute-target=target-name |
OS X*: | なし |
Windows*: | /Qoffload-attribute-target:target-name |
target-name |
特定のターゲット。利用可能な値は mic のみです。 |
オフ |
コンパイラーは、ソースファイル中のプロシージャーとデータ・オブジェクトにオフロード属性 target(mic) のフラグを付けません。 |
このオプションは、ソースファイル中のプロシージャーとデータ・オブジェクトにオフロード属性 target(mic) のフラグを付けます。
このオプションは、必要な個々の ATTRIBUTES OFFLOAD:MIC 宣言子を使用して、ソースファイル内のすべてのプロシージャーとデータ・オブジェクトに target(mic) 属性を付けるのと似ています。
ソースに埋め込まれた個々の ATTRIBUTES OFFLOAD:MIC 宣言子は、このオプションよりも優先されます。
なし
以下に、[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