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