インテル® 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 には次のものが含まれます。
ベクトル統計: 選択された関数用の 64 ビット・プラットフォーム専用 C アプリケーション API:
ILP64 インターフェイスと LP64 インターフェイスでは同じインクルード・ディレクトリーが使用されます。
以下の表は、ILP64 および LP64 インターフェイス用のコンパイル方法を示しています。
Fortran |
|
---|---|
ILP64 用のコンパイル |
ifx -i8 -I<mkl directory>/include ... |
LP64 用のコンパイル |
ifx -I<mkl directory>/include ... |
C/C++ |
|
ILP64 用のコンパイル |
icx-DMKL_ILP64 -I<mkl directory>/include ... |
LP64 用のコンパイル |
icx-I<mkl directory>/include ... |
-i8 または -DMKL_ILP64 オプションを使用してコンパイルしたアプリケーションと LP64 ライブラリーをリンクすると、予測できない結果や誤出力が発生する場合があります。
ILP64 インターフェイスを使用していない場合、既存コードを変更する必要はありません。
ILP64 へ変更したり、ILP64 用に新しいコードを記述する場合は、インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) 関数とサブルーチンのパラメーターに適切なタイプを使用してください。
整数タイプ |
Fortran |
C/C++ |
---|---|---|
32 ビット整数 |
INTEGER*4 または |
int |
ILP64/LP64 のユニバーサル整数
|
INTEGER |
MKL_INT |
ILP64/LP64 のユニバーサル整数
|
INTEGER*8または |
MKL_INT64 |
ILP64/LP64 の FFT インターフェイス整数 |
INTEGER |
MKL_LONG |
関数の整数パラメーターの種類を決定するには、適切なインクルード・ファイルを使用します。Fortran インターフェイスのみをサポートする関数には、C/C++ インクルード・ファイル *.h を使用します。
上記の表では、ILP64 で 64 ビットになる整数パラメーターと 32 ビットのままの整数パラメーターを説明しています。この表は、インターフェイスに関係なく整数パラメーターを 64 ビットまたは 32 ビットにする必要がある一部のベクトル数学関数およびベクトル統計関数を除く、ほとんどのインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) 関数に適用されます。
ベクトル数学: 関数の mode パラメーターは 64 ビットです。
乱数ジェネレーター (RNG):
viRngUniformBits64 を除く離散 RNG はすべて 32 ビットです。
viRngUniformBits64 ジェネレーター関数と vslSkipAheadStream サービス関数は 64 ビットです。
インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) デベロッパー・リファレンスを参照してください。
ILP64 インターフェイスの詳細を理解するには、例も参照してください。
すべてのインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) 関数ドメインは、ILP64 プログラミングをサポートしていますが、FFTW はインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) にインターフェイスします。
FFTW 2.x ラッパーは ILP64 をサポートしていません。
FFTW 3.2 ラッパーは専用の関数セット plan_guru64 によって ILP64 をサポートしています。