インテル® Fortran コンパイラー XE 13.1 ユーザー・リファレンス・ガイド

CPU の関数を呼び出してコプロセッサーの実行環境を変更する

このトピックは、インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーにのみ適用されます。

一部の CPU API には同等のオフロード API があります。オフロードバージョンでは、ターゲットの型とターゲット番号の 2 つの引数を指定します。引数の定義を次に示します。

target_type

target_type はスタティックです。次の事前に定義されたデフォルトの 1 つを使用することを推奨します。

default_target_type

target_number

ターゲットの特定のコプロセッサー。

値が次のように解釈される式。

-1

ターゲット上での実行を指定します。 ランタイムシステムは特定のターゲットを選択します。CPU で実行することはできません。 オフロードプログラムの実行に必要な正しいターゲット・ハードウェアがシステムで利用できない場合、プログラムは実行に失敗してエラーメッセージを出力します。

>=0

0 以上の値は、特定のターゲット上での実行を指定します。 特定のターゲットの番号は次のように指定します。

target=target-number % number_of_targets

オフロードプログラムの実行に必要な正しいターゲット・ハードウェアがシステムで利用できない場合、プログラムは実行に失敗してエラーメッセージを出力します。

<-1

この値は予約されています。

例えば、4 つのターゲットを搭載したシステムの場合:

  • 2 または 6 を指定すると、ランタイムシステムはターゲット 2 でコードを実行します (2 % 46 % 4 はどちらも 2 になるため)。

  • 1000 を指定すると、ランタイムシステムはターゲット 0 でコードを実行します (1000 % 4 = 0 になるため)。

次の mic_lib.f90 ヘッダーファイルは、コプロセッサーの環境に影響する、CPU から可能な関数呼び出しをすべて定義します。

このトピックでは、例として CPU API omp_set_num_threads およびそのオフロードバージョンを使用します。

CPU API
subroutine omp_set_num_threads (num_threads)                    &
           bind (C, name = "omp_set_num_threads")
  import :: c_int
  integer (kind=c_int), value :: num_threads
end subroutine omp_set_num_threads
オフロード API
subroutine omp_set_num_threads_target (target_type,                    &
                                       target_number,                  &
                                       num_threads)                    &
           bind (C, name = "omp_set_num_threads_target")
  import :: c_int
  integer (kind=c_int), value :: target_type, target_number, num_threads
end subroutine omp_set_num_threads_target
use mic_lib
use omp_lib

integer :: result, value

value = 66
call omp_set_num_threads_target &
         (TARGET_MIC, 0, value)
!DIR$ OMP OFFLOAD target(mic) out(result)
!$omp parallel
!$omp master
result = omp_get_num_threads()
!$omp end master
!$omp end parallel
print "(A, I)", "Number of threads on target", result
stop
end

関連情報


このヘルプトピックについてのフィードバックを送信