ベクトル関数の作成および呼び出し時に、コンパイラーが使用するアプリケーション・バイナリー・インターフェイス (ABI) を指定します。この機能は ifort でのみ利用できます。
Linux*: | -vecabi=keyword |
macOS*: | -vecabi=keyword |
Windows*: | /Qvecabi:keyword |
keyword |
使用するベクトル関数のアプリケーション・バイナリー・インターフェイス (ABI) を指定します。設定可能な値は以下のとおりです。
|
compat |
互換性のあるベクトル関数の ABI を使用します。 |
このオプションは、ベクトル関数の作成および呼び出し時に、コンパイラーが使用するアプリケーション・バイナリー・インターフェイス (ABI) を指定します。
リンク時または実行時の問題を回避するには、ライブラリーを含むベクトル関数を定義または使用するアプリケーションのすべてのファイルをコンパイルするときに [Q]vecabi 設定を使用します。cmdtarget を指定する場合、[Q]x オプションと [Q]ax オプションの値が同じでなければなりません。
再コンパイルできないベクトル関数定義を含むライブラリーまたはプログラムモジュール/ルーチンで cmdtarget 設定を使用する場合は注意が必要です。cmdtarget を指定することで、リンクエラーが発生することがあります。
Linux* では、デフォルトが compat のため、生成されるベクトル関数のバイナリーが以前のバージョンのインテル® コンパイラーによってベクトル化されたバイナリーと下位互換性を保持しなければならない場合、legacy を指定する必要があります。
cmdtarget を指定すると、各 vector 属性 をコピーし、ターゲット・プロセッサーを変更して、追加のベクトル関数バージョンが作成されます。ベクトル関数の数は、[Q]x や [Q]ax オプションの設定によって決定されます。
例えば、次の関数宣言について考えてみます。
interface integer function foo(a) !dir$ attributes vector:(processor(core_2_duo_sse4_1)) :: foo integer a end function end interface
次のオプションを指定します: -axAVX,CORE-AVX2。
以下に、compat または cmdtarget 設定を使用した場合の結果を示します。
compat |
cmdtarget |
---|---|
(vector 属性 によって) インテル® SSE4.1 向けのベクトルバージョンが 1 つ作成されます。 |
次のターゲット向けの 4 つのベクトルバージョンが作成されます。
|
インテル互換のベクトル関数 ABI の詳細については、ダウンロード可能な「Vector Function Application Binary Interface」(https://software.intel.com/content/www/us/en/develop/download/vector-simd-function-abi.html (英語)) を参照してください。
GCC ベクトル関数 ABI の詳細については、sourceware.org (英語) の GLIBC wiki にある Libmvec - vector math library ドキュメントを参照してください。
なし
製品および性能に関する情報 |
---|
性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。 注意事項の改訂 #20201201 |