SDPA の 64bit Windows バイナリを生成するために OpenBLAS をコンパイルしているが、以下のような make コマンドを実行すると mingw64 でコンパイルがうまくできることが分かった。
ただ、これだと CBLAS, WARMUP, LAPACKE を使用しておらず、また DYNAMIC_ARCH なので生成されるファイルも大きなものになる。
rm -rf OpenBLAS
git clone https://github.com/xianyi/OpenBLAS.git
cd OpenBLAS
make \
CFLAGS="-static" CXXFLAGS="-static" FCFLAGS="-static" FFLAGS="-static" \
DYNAMIC_ARCH=1 \
HOSTCC=gcc \
CC=x86_64-w64-mingw32-gcc \
FC=x86_64-w64-mingw32-gfortran \
CROSS_SUFFIX=x86_64-w64-mingw32- \
BINARY=64 \
USE_OPENMP=0 \
NO_CBLAS=1 \
NO_WARMUP=1 \
NO_LAPACKE=1 \
libs netlib
# この上までが make コマンドの引数
ln -s libopenblas.a libopenblas.lib
x86_64-w64-mingw32-ranlib libopenblas.lib
これを利用して、SDPA をコンパイルすると
$ file ./sdpa.exe
./sdpa.exe: PE32+ executable (console) x86-64, for MS Windows
となって、たしかに 64bit Windows バイナリが生成できる。
また、Windows で実行しているときにタスクマネージャで確認しても *32 が表示されないので、64bit バイナリとなっている。
今日のランチ:食堂 ライスS + わかめの味噌汁 + 野菜たっぷりハンバーグ + ほうれん草ごま和え
明日の予測作業時間:3h
0 件のコメント:
コメントを投稿