ひとまずWindows上で動かせるようにする。なぜなら、数値計算用のマシンがWindowsだから・・・。インストール済みのminicondaがPython2.xだったのでアンインストールの上、Anacondaをインストール。AnacondaでインストールしたPythonは3.6ということで、今までWindowsにインストールしていた3.5はアンインストールすることにした。
Boost.Numpyは1.63からBoostに同梱されるようになったので、新しいものをインストールすればよさげ。インストール後、C:\ProgramData\Anaconda3\Library\include\boost\python下にnumpyディレクトリがあることを確認。
$ conda install -c conda-forge boost=1.65.0
コンパイル時は以下のディレクトリを指定すればよい(?)。Anaconda3のpkgディレクトリをみるとvc14って文字列が見えたけど、VisualStudio15でないとうまくいかないパターンやろか。。。
include directory: C:\ProgramData\Anaconda3\include, C:\ProgramData\Anaconda3\Library\include include direcotry: C:\ProgramData\Anaconda3\libs, C:\ProgramData\Anaconda3\Library\lib
はい、Visual Studio13(vc12)ではだめですねー、dll吐き出せませんーー。もう組み込みの開発は終了したからVS2015に移行してもよい気がするけど、Let's Noteに入れてあるVS2015で作業する。というわけで、Anacondaのインストールからやり直しorz。
んで、やり直してビルドするもエラー。libboost_numpy3-vc140-mt-s-1_64.libがないと怒られた。libboost_numpy3-vc140-mt-1_64.libはあるけど、libboost_numpy3-vc140-mt-s-1_64.libはない。MultithreadはあるのにMultithread static runtimeがない。Boostのビルドからやり直しってやつか。なお、ネット上のブログなりQiitaなりを見る限り、Macだと自前でビルドせずにうまくいってるっぽい。
公式からWindows用のzipファイルをダウンロードしてローカルで展開。VS2015 x64 Native tool cmdを管理者権限で開き、展開したディレクトリのルートで以下を実行。
$ bootstrap.bat
次に、project-config.jamとuser-config.jamを編集。msvcとpythonの箇所でパス指定。どっちかかたっぽでよかったぽい? 前者の中身は以下。
import option ; using msvc : 14.0 : "c:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64/cl.exe"; option.set keep-going : false ;
後者のpython部分は以下。
# Configure specific Python version. using python : 3.6.2 : C:/ProgramData/Anaconda3 : C:/ProgramData/Anaconda3/include : C:/ProgramData/Anaconda3/libs ;
設定ファイルを変更したら以下を実行。今回はpythonだけビルドすればよい。
$ .\b2 toolset=msvc threading=multi variant=debug,release link=static runtime-link=static address-model=64 --stagedir=stage/x64 -j 6 --with-python
結果、以下のファイルが出力されていた。
libboost_numpy3-vc140-mt-s-1_65.lib libboost_numpy3-vc140-mt-sgd-1_65.lib libboost_python3-vc140-mt-s-1_65.lib libboost_python3-vc140-mt-sgd-1_65.lib
Boostを自前でビルドしたので, VSのパスも変更。
include directory: C:\ProgramData\Anaconda3\include, C:\Users\hitoh\Documents\boost_1_65_0 include direcotry: C:\ProgramData\Anaconda3\libs, C:\Users\hitoh\Documents\boost_1_65_0\stage\x64\lib
VSの設定を、
Release x64 構成プロパティ→全般→構成の種類を.dllに
あとはビルドすればよい。
- http://wakame.hatenablog.jp/entry/2017/06/24/145122
- http://tadaoyamaoka.hatenablog.com/entry/2017/05/25/234934
- http://tatsyblog.sakura.ne.jp/wordpress/programming/python/1308/
- https://qiita.com/termoshtt/items/81eeb0467d9087958f7f
理論部分は原稿にまでできているのに、実時間で計算させるための実装に時間くっててしぶい気持ち。。。