Windows 8.1 x64環境下でのIntel Parallel Studio XE 2016 + Visual Studio 2016を使ったLAPACKEプログラムのコンパイル方法のメモ。
1. 必要な環境変数一切合切を用意してくれるCUIショートカット「コンパイラ―16.0 Update 2インテル(R) 64 VS2015環境」を起動
2. LAPACKEソースプログラム”lapack_dgesv_mkl.cを置いた”c:\lapack”へ移動
3. シリアル実行の時はicl (C/C++コンパイラ) を使って,例えば
c:\lapack>icl lapack_dgesv_mkl.c /link mkl_intel_lp64.lib mkl_core.lib mkl_sequential.lib
とする。
c:\lapack>icl lapack_dgesv_mkl.c /link mkl_intel_lp64.lib mkl_core.lib mkl_sequential.lib インテル(R) 64 対応インテル(R) C++ コンパイラー (インテル(R) 64 対応アプリケーシ ョン用)、バージョン 16.0.2.180 ビルド 20160204 (C) 1985-2016 Intel Corporation. 無断での引用、転載を禁じます。 lapack_dgesv_mkl.c icl: 注意: この製品の評価期間は 17-mar-2016 UTC に終了します。 Microsoft (R) Incremental Linker Version 14.00.23026.0 Copyright (C) Microsoft Corporation. All rights reserved. -out:lapack_dgesv_mkl.exe mkl_intel_lp64.lib mkl_core.lib mkl_sequential.lib lapack_dgesv_mkl.obj c:\lapack>lapack_dgesv_mkl Intel(R) Math Kernel Library Version 11.3.2 Product Build 20160120 for Intel(R) 64 architecture applications Max Number of Threads: 1 Dim = 4 A = 0: 1.000000 0.500000 0.333333 0.250000 1: 0.500000 0.333333 0.250000 0.200000 2: 0.333333 0.250000 0.200000 0.166667 3: 0.250000 0.200000 0.166667 0.142857 B = 0: 1.000000 2.000000 3.000000 4.000000 1: 2.000000 3.000000 4.000000 5.000000 2: 3.000000 4.000000 5.000000 6.000000 3: 4.000000 5.000000 6.000000 7.000000 C = 0: 4.000000 6.083333 8.166667 10.250000 1: 2.716667 4.000000 5.283333 6.566667 2: 2.100000 3.050000 4.000000 4.950000 3: 1.721429 2.480952 3.240476 4.000000 X = 0: 1.000000 2.000000 3.000000 4.000000 1: 2.000000 3.000000 4.000000 5.000000 2: 3.000000 4.000000 5.000000 6.000000 3: 4.000000 5.000000 6.000000 7.000000 X - B = 0: 0.000000 0.000000 0.000000 0.000000 1: 0.000000 0.000000 0.000000 0.000000 2: 0.000000 0.000000 0.000000 0.000000 3: 0.000000 0.000000 0.000000 0.000000
4. Intel Threadを使ってパラレル実行の時はiclコマンドを使って,例えば
c:\lapack>icl lapack_dgesv_mkl.c /link libiomp5md.lib mkl_intel_lp64.lib mkl_core.lib mkl_intel_thread.lib
でコンパイル。
Core i5-2500 (4 cores)で実行すると下記のようになる。
c:\lapack>icl lapack_dgesv_mkl.c /link libiomp5md.lib mkl_intel_lp64.lib mkl_core.lib mkl_intel_thread.lib インテル(R) 64 対応インテル(R) C++ コンパイラー (インテル(R) 64 対応アプリケーシ ョン用)、バージョン 16.0.2.180 ビルド 20160204 (C) 1985-2016 Intel Corporation. 無断での引用、転載を禁じます。 lapack_dgesv_mkl.c icl: 注意: この製品の評価期間は 17-mar-2016 UTC に終了します。 Microsoft (R) Incremental Linker Version 14.00.23026.0 Copyright (C) Microsoft Corporation. All rights reserved. -out:lapack_dgesv_mkl.exe libiomp5md.lib mkl_intel_lp64.lib mkl_core.lib mkl_intel_thread.lib lapack_dgesv_mkl.obj c:\lapack>lapack_dgesv_mkl Intel(R) Math Kernel Library Version 11.3.2 Product Build 20160120 for Intel(R) 64 architecture applications Max Number of Threads: 4 Dim = 4 A = 0: 1.000000 0.500000 0.333333 0.250000 1: 0.500000 0.333333 0.250000 0.200000 2: 0.333333 0.250000 0.200000 0.166667 3: 0.250000 0.200000 0.166667 0.142857 B = 0: 1.000000 2.000000 3.000000 4.000000 1: 2.000000 3.000000 4.000000 5.000000 2: 3.000000 4.000000 5.000000 6.000000 3: 4.000000 5.000000 6.000000 7.000000 C = 0: 4.000000 6.083333 8.166667 10.250000 1: 2.716667 4.000000 5.283333 6.566667 2: 2.100000 3.050000 4.000000 4.950000 3: 1.721429 2.480952 3.240476 4.000000 X = 0: 1.000000 2.000000 3.000000 4.000000 1: 2.000000 3.000000 4.000000 5.000000 2: 3.000000 4.000000 5.000000 6.000000 3: 4.000000 5.000000 6.000000 7.000000 X - B = 0: 0.000000 0.000000 0.000000 0.000000 1: 0.000000 0.000000 0.000000 0.000000 2: 0.000000 0.000000 0.000000 0.000000 3: 0.000000 0.000000 0.000000 0.000000 c:\lapack>