インテル® MKL 11.3 ユーザーズガイド

コーディング手法

パフォーマンスを向上させるには、コードで配列のアライメントを適切に行います。追加の条件により特定の関数ドメインのパフォーマンスを向上できます。

データのアライメント

インテル® MKL を呼び出すアプリケーションのパフォーマンスを向上させるには、配列を 64 バイト境界でアライメントして、配列のリーディング・ディメンジョンが 64 で割り切れるようにします。

LAPACK 圧縮ルーチン

名前の行列の型と格納位置 (2 つ目と 3 つ目の文字) が HP、OP、PP、SP、TP、UP のルーチンは、圧縮形式で行列を処理します (『インテル® MKL リファレンス・マニュアル』の LAPACK の「ルーチン命名規則」セクションを参照)。 これらの機能は、名前の行列の型と格納位置 (2 つ目と 3 つ目の文字) が HE、OR、PO、SY、TR、UN の非圧縮ルーチンの機能と厳密に等価ですが、パフォーマンスは大幅に低くなります。

メモリー制限があまり厳しくない場合は、非圧縮ルーチンを使用してください。この場合、それぞれの圧縮ルーチンで要求されるメモリーよりも N2/2 多いメモリーを割り当てる必要があります。N は問題サイズ (方程式の数) です。

例えば、エキスパート・ドライバーを使用した対称固有値問題を解く時間を短縮するには、次の非圧縮ルーチンを使用します。

            
call dsyevx(jobz, range, uplo, n, a, lda, vl, vu, il, iu, abstol, m, w, z, ldz, work, lwork, iwork, ifail, info)
            

a は少なくとも N2 の要素を含む次元 lda-n です。変更前の圧縮ルーチンは次のとおりです。

call dspevx(jobz, range, uplo, n, ap, vl, vu, il, iu, abstol, m, w, z, ldz, work, iwork, ifail, info)
            

ap は次元 N*(N+1)/2 です。

最適化に関する注意事項

インテル® コンパイラーは、互換マイクロプロセッサー向けには、インテル製マイクロプロセッサー向けと同等レベルの最適化が行われない可能性があります。これには、インテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2)、インテル® ストリーミング SIMD 拡張命令 3 (インテル® SSE3)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。インテル® マイクロアーキテクチャーに非固有の特定の最適化は、インテル製マイクロプロセッサー向けに予約されています。この注意事項の適用対象である特定の命令セットの詳細は、該当する製品のユーザー・リファレンス・ガイドを参照してください。

改訂 #20110804

関連情報