インテル® Fortran コンパイラー XE 13.1 ユーザー・リファレンス・ガイド
コンパイラーは、ソースファイル中のプロシージャーとデータ・オブジェクトにオフロード属性 "target(mic)" のフラグを付けます。
このオプションを指定すると、コンパイラーは、ソースファイル中のプロシージャーとデータ・オブジェクトにオフロード属性 target(mic) のフラグを付けます。
このオプションは、必要な個々の ATTRIBUTES OFFLOAD:MIC 宣言子を使用して、ソースファイル内のすべてのプロシージャーとデータ・オブジェクトに target(mic) 属性を付けるのと似ています。
ソースに埋め込まれた個々の ATTRIBUTES OFFLOAD:MIC 宣言子は、このオプションよりも優先されます。
以下に Linux* 上での -offload-attribute-target オプションの使用例を示します。モジュール変数 t_glob はホストでのみ更新され、モジュール変数 t_priv はターゲットでのみ更新されます。-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
次のようにコマンドラインでソースをコンパイルします。
$ ifort -c m.F90 -offload-attribute-target=mic
$ ifort m.o t.F90 -o t.exe
t.exe の出力は次のようになります。
glob_func: t_priv = 44 j = 22
main: t_glob = 66 i = 33