インテル® Fortran コンパイラー XE 13.1 ユーザー・リファレンス・ガイド
このトピックは、インテル® メニー・インテグレーテッド・コア (インテル® 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
このコードブロックは、最初の 10 個の偶数を検索して配列に格納します。コードブロックの先頭および終了は OFFLOAD 宣言子です。 コンパイラーは、CPU とコプロセッサーの両方で実行するようにコードブロックをビルドします。
ホスト CPU とコプロセッサーの命令セットは似ていますが、同じシステムメモリーを共有しません。このため、コードブロックで使用する変数はホスト CPU とコプロセッサーの両方に存在していなければなりません。宣言子は、指定子を使用してホスト CPU とコプロセッサー間でコピーする変数を定義します。
in 指定子は、コプロセッサーの入力に使用する変数を定義します。 この変数はホスト CPU にコピーされません。
out 指定子は、コプロセッサーの出力に使用する変数を定義します。 ホスト CPU はこの変数をコプロセッサーにコピーしません。
inout 指定子は、ホスト CPU からコプロセッサーおよびコプロセッサーからホスト CPU にコピーされる変数を定義します。
宣言子には、複数のコプロセッサーを持つシステムの特定のコプロセッサーを指定する target (mic:target_number) 指定子も含まれています。
デフォルトでは、コンパイラーは CPU とコプロセッサーの両方で実行するアプリケーションを生成しますが、-no-offload コンパイラー・オプションを使用して、同じソースコードから CPU のみで実行するアプリケーションを生成することもできます。