インテル® MKL 2017 デベロッパー・ガイド
以下のインテル® MKL 関数ドメインは OpenMP* テクノロジーによりスレッド化されます。
直接法スパースソルバー。
LAPACK。
スレッド化されるルーチンのリストは、「LAPACK ルーチン」を参照してください。
レベル 1 BLAS とレベル 2 BLAS。
スレッド化されるルーチンのリストは、「レベル 1 BLAS ルーチンとレベル 2 BLAS ルーチン」を参照してください。
レベル 2 スパース三角ソルバーを除くすべてのレベル 3 BLAS ルーチンとスパース BLAS ルーチン。
すべてのベクトルマス関数 (サービス関数を除く)。
FFT。
スレッド化できる FFT 変換のリストは、「スレッド化される FFT 問題」を参照してください。
このセクションで、? は各ルーチンの精度接頭辞を表します。値は、s、d、c、または z になります。
以下の LAPACK ルーチンは OpenMP* によりスレッド化されます。
スレッド化される LAPACK ルーチンまたは BLAS ルーチンに基づいて OpenMP* 並列処理を効果的利用する LAPACK ルーチン:
?gesv、?posv、?gels、?gesvd、?syev、?heev、cgegs/zgegs、cgegv/zgegv、cgges/zgges、cggesx/zggesx、cggev/zggev、cggevx/zggevx など。
以下のリストで、? は各ルーチンの精度接頭辞を表します。値は、s、d、c、または z になります。
以下のルーチンは、インテル® Core™2 Duo プロセッサーおよびインテル® Core™ i7 プロセッサー用に OpenMP* によりスレッド化されます。
問題の以下の特性を基に、FFT 計算が OpenMP* によりスレッド化されるかどうかが決まります。
ほとんどの FFT 問題はスレッド化されます。特に、1 つの呼び出しにおける複数の変換の計算 (変換数 > 1) はスレッド化されます。以下に、スレッド化される変換の詳細を示します。
1 次元 (1D) 変換
1D 変換は多くの場合スレッド化されます。
インターリーブ複素数データレイアウトを使用するサイズ N の 1D 複素数-複素数 (c2c) 変換は、以下の条件下でスレッド化されます (アーキテクチャーに依存します)。
アーキテクチャー |
条件 |
---|---|
インテル® 64 |
N が 2 の累乗、log2(N) > 9、変換が倍精度アウトオブプレース、入力/出力ストライドが 1。 |
IA-32 |
N が 2 の累乗、log2(N) > 13、変換が単精度。 |
N が 2 の累乗、log2(N) > 14、変換が倍精度。 |
|
任意 |
N がコンポジット (複合)、log2(N) > 16、入力/出力ストライドが 1。 |
スプリット複素数レイアウトを使用する 1D 複素数-複素数変換はスレッド化されません。
多次元変換
大量のデータの多次元変換はすべてスレッド化されます。
最適化に関する注意事項 |
---|
インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。 注意事項の改訂 #20110804 |