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

宣言子を使用したターゲット固有のコードの記述

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

ターゲット固有の関数を利用するように、ターゲットで実行する関数とオフロードコードのセクションを記述することができます。

コンパイラーは、コプロセッサー向けのコードを生成するとき、マクロ __MIC__ を定義します。 !DIR$ if defined __MIC__ セクション内にターゲット固有のコードを記述することができます。

!DIR$ OMP OFFLOAD 文に続く文の内部で __MIC__ マクロを使用しないでください。 ただし、宣言子から呼び出されるサブプログラムでこのマクロを使用することはできます。

クラス F32vec の実装は CPU とコプロセッサー専用です。 コプロセッサーで実行する場合、オフロードコードで専用バージョンを使用できます。オフロードに失敗して構造を CPU で実行する場合は、CPU バージョンを使用します。

!DIR$ ATTRIBUTES OFFLOAD : mic :: foo
integer function foo()
        implicit none
!DIR$ if defined  (__MIC__)
        foo = 1 ! コードはコプロセッサーで実行中です
!DIR$ else
        foo = 0 ! コードはホストで実行中です
!DIR$ endif
end function foo

program main
        implicit none

        ! ローカル変数
        integer :: result
        integer :: foo

        !DIR$ ATTRIBUTES OFFLOAD : mic :: foo

        ! ホストで foo を呼び出します
        result = foo()

        ! 結果を出力します
        if ( result ) then
                write (*,*) "Code ran on coprocessor"
        else
                write (*,*) "Code ran on host"
        end if

        ! MIC で foo を呼び出します
        !DIR$ OFFLOAD TARGET(mic)
        result = foo()

        ! 結果を出力します
        if ( result ) then
                write (*,*) "Code ran on coprocessor"
        else
                write (*,*) "Code ran on host"
        end if
end program main

関連情報


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