< 目次

ILP64 インターフェイスと LP64 インターフェイスの使用

インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) ILP64 ライブラリーは、64 ビット整数型 (231 - 1 以上の要素を含む大規模な配列のインデックス処理に必要) を使用します。しかし、LP64 ライブラリーは 32 ビット整数型を使用して配列をインデックス処理します。

LP64 と ILP64 インターフェイスはインターフェイス・レイヤーに実装されます。LP64 または ILP64 インターフェイスでは、それぞれ次のインターフェイス・ライブラリーとリンクします。

ILP64 インターフェイスは以下を提供します。

LP64 はインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) のバージョン 9.1 以前に提供されていたインターフェイスの新しい名前です。以前のインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) との互換性を保つ場合は、LP64 インターフェイスを選択してください。アプリケーションやライブラリーで大規模なデータ配列の計算にインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) を使用する場合は、ILP64 インターフェイスを選択してください。

64 ビット・プラットフォームでは、選択されたドメインが LP64 ライブラリー内の大規模データ配列をサポートする _64 サフィックス (SGEMM_64 など) を持つ API 拡張機能を提供します。これにより、1 つのアプリケーション内でデータタイプを混在させることができます。選択されたドメインと API には次のものが含まれます。

ILP64 インターフェイスと LP64 インターフェイスでは同じインクルード・ディレクトリーが使用されます。

LP64/ILP64 用のコンパイル

次の表は、ILP64 および LP64 インターフェイス用にコンパイルする方法を示します。

Fortran

ILP64 用のコンパイル

ifx /4I8 /I<mkl ディレクトリー>\include ...

LP64 用のコンパイル

ifx /I<mkl ディレクトリー>\include ...

C / C++

ILP64 用のコンパイル

icx/DMKL_ILP64 /I<mkl ディレクトリー>\include ...

LP64 用のコンパイル

icx/I<mkl ディレクトリー>\include ...

注意

-4I8 または -DMKL_ILP64 オプションを使用してコンパイルしたアプリケーションと LP64 ライブラリーをリンクすると、予測できない結果や誤出力が発生する可能性があります。

ILP64 のコーディング

ILP64 インターフェイスを使用していない場合、コードを変更する必要はありません。

ILP64 へ変更したり、ILP64 用に新しいコードを記述する場合は、インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) 関数とサブルーチンのパラメーターに適切なタイプを使用してください。

整数タイプ

Fortran

C / C++

32 ビット整数

INTEGER*4 または
INTEGER(KIND=4)

int

ILP64/LP64 のユニバーサル整数:

  • ILP64 の 64 ビット

  • それ以外の 32 ビット

INTEGER
以下がないKIND

MKL_INT

ILP64/LP64 のユニバーサル整数:

  • 64 ビット整数

INTEGER*8または
INTEGER(KIND=8)

MKL_INT64

ILP64/LP64 の FFT インターフェイス整数

INTEGER
指定なしKIND

MKL_LONG

関数の整数パラメーターのタイプを決定するには、適切なインクルード・ファイルを使用します。Fortran インターフェイスのみをサポートする関数の場合は、C/C++ インクルード・ファイル *.h を使用します。

上記の表は、関数のどの整数パラメーターが 64 ビットになり、どのパラメーターが ILP64 で 32 ビットのままであるかを説明しています。この表は、インターフェイスに関係なく整数パラメーターを 64 ビットまたは 32 ビットにする必要がある一部のベクトル数学関数およびベクトル統計関数を除く、ほとんどのインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) 関数に適用されます。

インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) デベロッパー・リファレンスを参照してください。

ILP64 インターフェイスの詳細を理解するには、例も参照してください。

制限事項

すべてのインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) 関数ドメインは、ILP64 プログラミングをサポートしていますが、FFTW はインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) にインターフェイスします。

関連情報