3

Ipopt を Intel MKL とリンクしようとしています (手順)。

Intel の Link Advisorは次のように提案しています。

リンクライン:

 -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_ilp64.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_intel_thread.a -Wl,--end-group -lpthread -lm -ldl

コンパイラ オプション:

 -DMKL_ILP64 -qopenmp -I${MKLROOT}/include

Ipopt を次のように構成しようとしています。

../configure CXX=icpc CC=icc F77=ifort --with-blas=" -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_ilp64.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_intel_thread.a -Wl,--end-group -lpthread -lm -ldl" CXXFLAGS=" -DMKL_ILP64 -qopenmp -I${MKLROOT}/include"

これは最終的に失敗し、次のことを示します。

checking whether user supplied BLASLIB=[text above]  does not work
4

3 に答える 3

3

最初に、MKL が正しくインストールされ、ここに示すように構成されていることを確認する必要があります。

https://software.intel.com/en-us/get-started-with-parallel-studio-xe-for-linux

永続的な方法は、次の行を.bashrcまたは.profile

source /opt/intel/parallel_studio_xe_2016.<##>.<###>/psxevars.sh intel64

次のコマンドラインを使用して、MKL の準備ができているかどうかを確認できます。有効な MKL インストール ディレクトリが表示されます。

$ echo $MKLROOT

MKL リンク ライン アドバイザーを使用している場合は、その指示に正確に従ってください。OpenMP lib -liomp5in link オプションと全体のコンパイル オプションが欠けていることに気付きました。

単一の動的 MKL で Ipopt をビルドするには、次のようにします。

$ mkdir build
$ cd build
$ ../configure --with-blas=' -Wl,--no-as-needed -L${MKLROOT}/lib/intel64  -lmkl_rt -lpthread -lm -ldl' CFLAGS=' -m64 -I${MKLROOT}/include' CXXFLAGS=' -m64 -I${MKLROOT}/include'

および動的MKLを使用して

$ mkdir build
$ cd build
$ ../configure --with-blas='-Wl,--no-as-needed -L${MKLROOT}/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread -liomp5 -lpthread -lm -ldl' CFLAGS=' -m64 -I${MKLROOT}/include' CXXFLAGS=' -m64 -I${MKLROOT}/include'

ただし、静的 MKL では機能しません。

上記の設定は gcc コンパイラでのみ機能します。


icc コンパイラを使用した動的 MKL は、次の設定でも動作します。

$ mkdir build
$ cd build
$ ../configure --with-blas=' -L${MKLROOT}/lib/intel64 -lmkl_intel_ilp64 -lmkl_core -lmkl_intel_thread -lpthread -lm -ldl' CFLAGS=' -DMKL_ILP64 -qopenmp -I${MKLROOT}/include' CXXFLAGS=' -DMKL_ILP64 -qopenmp -I${MKLROOT}/include' CC=icc CXX=icpc
于 2016-06-26T12:58:34.580 に答える
1

ipopt は LP64 Blas および Lapack ライブラリにリンクする必要があり、32 ビット整数インデックスを使用します。リンクしようとした MKL の ILP64 バージョンは、64 ビット整数インデックス用に構築されています。

于 2016-08-24T14:38:01.837 に答える