インテル® MKL 2020 デベロッパー・ガイド
次のサンプルコードとリンク行は、Fortran アプリケーションでインテル® MKL カーネルの直接呼び出しを有効にする方法を示します。
Fortran コンパイラーのプリプロセッサーによって前処理される mkl_direct_call.fi をインクルードします。
# include "mkl_direct_call.fi"
program DGEMM_MAIN
....
* インテル® MKL DGEMM の呼び出し
....
call sub1()
stop 1
end
* DGEMM を呼び出すサブルーチン
subroutine sub1
* インテル® MKL DGEMM の呼び出し
end
インテル® MKL をマルチスレッド・モードで使用するには、-fpp オプション (インテル® Fortran コンパイラー) または -Mpreprocess オプション (PGI コンパイラー) と MKL_DIRECT_CALL プリプロセッサー・マクロを指定してコンパイルします。
ifort –DMKL_DIRECT_CALL –fpp your_application.f -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a
$(MKLROOT)/lib/intel64/libmkl_core.a $(MKLROOT)/lib/intel64/libmkl_intel_thread.a -Wl,--end-group -lpthread –lm -openmp -I$(MKLROOT)/include
インテル® MKL をシーケンシャル・モードで使用するには、-fpp オプション (インテル® Fortran コンパイラー) または -Mpreprocess オプション (PGI コンパイラー) と MKL_DIRECT_CALL_SEQ プリプロセッサー・マクロを指定してコンパイルします。
ifort –DMKL_DIRECT_CALL_SEQ –fpp your_application.f -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a
$(MKLROOT)/lib/intel64/libmkl_core.a $(MKLROOT)/lib/intel64/libmkl_sequential.a -Wl,--end-group -lpthread –lm -I$(MKLROOT)/include
最適化に関する注意事項 |
---|
インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。 注意事項の改訂 #20110804 |