2016/04/30(土)ubuntu 16.04インストール(10) IntlabとBLAS
Intlabは、INTLAB version 9をubuntu上のoctaveで使うの記事の通りで大丈夫です。
numpy, octave, Intlabなどは、高速なBLASが無いと本来の性能を発揮できないので、BLASを入れます。こちらも大体ubuntu 14.04でBLASを使うの記事と同じです。
sudo apt install libatlas-base-dev sudo apt install libatlas-doc sudo apt install libopenblas-base (既に入っていた) sudo apt install libopenblas-devこの時点で有効になっているライブラリを見ると、
$ sudo update-alternatives --config libblas.so.3 alternative libblas.so.3 (/usr/lib/libblas.so.3 を提供) には 3 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ * 0 /usr/lib/openblas-base/libblas.so.3 40 自動モード 1 /usr/lib/atlas-base/atlas/libblas.so.3 35 手動モード 2 /usr/lib/libblas/libblas.so.3 10 手動モード 3 /usr/lib/openblas-base/libblas.so.3 40 手動モード 現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: $ sudo update-alternatives --config liblapack.so.3 alternative liblapack.so.3 (/usr/lib/liblapack.so.3 を提供) には 3 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ * 0 /usr/lib/openblas-base/liblapack.so.3 40 自動モード 1 /usr/lib/atlas-base/atlas/liblapack.so.3 35 手動モード 2 /usr/lib/lapack/liblapack.so.3 10 手動モード 3 /usr/lib/openblas-base/liblapack.so.3 40 手動モード 現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください:のような感じでした。14.04のときと違って、openblas版のlapackが入るようになってそれが有効になっていました。
更に、octave+openblas+intlabで丸め変更を検証の記事と同様に丸めの向きが正しく変わっているか検証すると、やはりマルチコアでopenblasは丸めの向きが変わりませんでした。そこで、先の記事と同様にopenblasを作り直します。
やり方は先の記事とほとんど同じですが、ひとつだけ注意点があって、Ubuntu 16.04 LTSをインストールする - Narrow Escapeの記事にあるように、16.04ではデフォルトでaptでパッケージのソースが落とせないようになっています。記事にあるように、
/etc/apt/sources.listでコメントアウトされているdeb-srcをコメントアウトを外す。 sudo apt updateを実行し、パッケージのソースを落とせるようにします。
後は14.04のときとほとんど同じです。
apt source openblas sudo apt build-dep openblas (必要なものを入れる。liblapack-picが入った) cd openblas-0.2.18/Makefile.ruleを編集し、コメントアウトされている
CONSISTENT_FPCSR = 1を有効化する。
dch -i で、version番号を進め、changelogを書く。 dpkg-buildpackage -b -uc -us cd .. sudo dpkg -i libopenblas-base_0.2.18-1ubuntu2_amd64.deb sudo dpkg -i libopenblas-dev_0.2.18-1ubuntu2_amd64.debこれで、マルチコアでもきちんと丸めの向きが変わるようになりました。