2016/04/24(日)ubuntu 16.04 インストール(4) vim

vi大好きなのでvimを入れます。
sudo apt install vim
日本語の漢字コードの異なるファイルを自動認識するように、/etc/vim/vimrc.localを
set encoding=utf-8
set fileencodings=euc-jp,sjis,iso-2022-jp,utf-8
の内容で新規作成しました。これで、デフォルトのコードがUTF8になり、EUC、SJIS、JISコードのファイルも自動認識して表示するようになります。

2016/04/24(日)ubuntu 16.04 インストール(3) TeX関連

普段研究で作成する文書類はすべてubuntuで書いています。TeX系のソフトウェアが安定して使えるかは重要。
sudo apt install texlive-lang-cjk
sudo apt install texlive-fonts-recommended
sudo apt install texlive-fonts-extra
sudo apt install xdvik-ja
sudo apt install dvipsk-ja
sudo apt install gv
14.04ではevinceでpdfを見ると明朝になるべき部分も全てゴシックになってしまう問題がありましたが、16.04では問題ないようです。

その他文書作成関連のソフトウェアをついでに入れました。
sudo apt install nkf
sudo apt install gnuplot
sudo apt install gnuplot-x11
sudo apt install gnuplot-doc
sudo apt install tgif
sudo apt install gimp
sudo apt install inkscape
sudo apt install mimetex
sudo apt install latexdiff
そういえば、apt-getはいつの間にかaptになったようです。

2016/04/24(日)ubuntu 16.04 インストール(2) vmware tools

ubuntu 16.04はvmware上で動かしているわけですが、デスクトップのリサイズ、ホストOSとのクリップボード共有(文字列のコピペが出来るようになる)、フォルダ共有などを実現するvmware-toolsをゲストOSに入れるのはほぼ必須です。vmware toolsを入れるのにやや苦戦したので、記録を残しておきます。

まず、普通のインストール手段を試してみました。vmware toolsのインストールをクリックすると、CDがマウントされてファイルブラウザが開くので、tar.gzをhomeにコピーして展開し、
sudo ./vmware-install.pl
後は質問には基本的にreturnを押すだけでいいはずですが、コンパイルエラーになってしまいます。カーネルモジュールのmakeを行なうのですが、カーネルが新しくなってソースコードが変化し、それにvmware toolsが追いついていないようです。以前からこの現象は起きていてvmware toolsのちょっとした修正で凌いでいたのですが、エラーメッセージを見たところ直す箇所はかなり多そうに感じました。

困って検索してみたところ、VMware Tools Patchesに修正とインストールを全自動でやってくれるpatchがあるのを見つけました。こちらは、
sudo apt install git
git clone https://github.com/rasa/vmware-tools-patches.git
cd vmware-tools-patches
./patched-open-vm-tools.sh
で、自動的にvmware-toolsがダウンロードされてpatchを当てられてインストールされました。しかし、デスクトップのリサイズとフォルダ共有はうまくいったのですが、クリップボード共有が使えず。

第3の手段として、open-vm-toolsを試してみました。
sudo apt install open-vm-tools-desktop
再起動後、デスクトップのリサイズもクリップボード共有もうまく動作しました。共有フォルダは普段はOSの機能で賄っていてあまり使っていないのですが、設定→オプション→共有フォルダ で共有フォルダを有効にしてみました。/mnt/hgfs 以下に共有フォルダが見えるはずだが、見えません。しかしvmware-hgfsclientを実行すると設定した共有フォルダ名が見えているので、後少しっぽいです。最終的に、VMwarePlayer上のArchLinuxとホストOSとフォルダ共有をする失敗談 - みちのいに!!を参考にしてうまくいきました。
予め
mkdir /mnt/hgfs
しておき、
sudo vmhgfs-fuse -o allow_other -o auto_unmount .host:/ /mnt/hgfs
でマウント出来ました。永続的にmountするには、/etc/fstabで
.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,auto_unmount,defaults 0 0
と書くとよいでしょう。

結論として、open-vm-toolsがお勧めです。しかし、最近はvirtualboxが安定してきてみんなそっちを使っているようで、vmwareをやめてvirtualboxにするのがいいかもなあ。

2016/04/24(日)ubuntu 16.04 インストール(1)

ubuntu 16.04が4月21日にリリースされました。

14.04以来2年ぶりのLTS (Long Time Support)で、5年間のサポート期間があります。半年毎にアップデートするのは面倒なのでLTSを愛用していますが、ubuntuではセキュリティパッチは当たるものの基本的にソフトウェアのバージョンは上がらないので、14.04はそろそろ古くなってきました。

というわけで、16.04に乗り換えるべく、いろいろインストールして試してみます。その過程を日記として残します。

Ubuntu 16.04 (Xenial Xerus)から、 ubuntu-16.04-desktop-amd64-iso をダウンロードします。自分が落としたときはリリース直後だったのでtorrentを使いました。もう数日すると「日本語remix」バージョンも公開されるとは思いますが、待ちきれずに本家を入れました。

VMwareで作業しました。新規仮想マシン→標準→後でOSをインストール。仮想マシンの種類はLinux Ubuntu 64bit。ディスクはデフォルトの20Gじゃ少ないので256Gに増やしました。仮想マシンの設定でisoをマウントし起動。
  • 「日本語」を選ぶ。
  • 「Ubuntuをインストール」を選ぶ。
  • 「Ubuntuのインストール中にアップデートをダウンロードする」、「グラフィックス、Wi-Fi機器、Flash、MP3やその他のメディアに必要なサードパーティーソフトウェアをインストールする」をチェック
  • 「安全のため新しいUbuntuのインストールを暗号化する」、「新しいUbuntuのインストールにLVMを使用する」はチェックしない。
  • 「Tokyo」を選ぶ。
  • キーボードは「日本語」「日本語」
  • 「ログイン時にパスワードを要求する」を選ぶ。
インストールは全く問題なく終了しました。

初めてubuntuを使うとメニューから端末を出せずにびっくりするかもしれませんが、左上の渦巻きみたいなアイコンから「terminal」を検索して出します。右クリックして「Launcherへ登録」するといいでしょう。

2015/06/21(日)ubuntu 14.04でBLASを使う

ubuntu 14.04上でBLASをパッケージで入れて使ってみたのでメモを残しておきます。

BLASは、Basic Linear Algebra Subprogramsの略で、行列積などの基本的な行列計算のためのライブラリです。LAPACKなどの様々なプログラムから呼び出されます。行列計算は環境によって最適な書き方が違うので、行列計算の部分を差し替え可能なように分離しておきユーザが最適なBLASに差し替えて最高の性能を出す、ということを意図しています。

多くの環境で、デフォルトのBLASは単なるfor文で書かれたちっとも速くない「reference BLAS」と呼ばれるものになっています。自分の環境でも、reference BLASが入っていました。この場合例えばnumpyの行列計算は、全くCPU本来の性能を出せていません。

ubuntu 14.04では、atlasとopenblasという高速なBLASがパッケージで提供されています。今回は、それらをインストールしてnumpyの速度がどうなるか調べてみました。

インストールは次のように行いました。
sudo apt-get install libatlas-base-dev
sudo apt-get install libatlas-doc
sudo apt-get install libopenblas-base
sudo apt-get install libopenblas-dev
これで3種類のBLASがインストールされたことになりますが、これらは差し替えて使うことを意図しているのでshared libraryとして同一のファイル名になっています。Ubuntuでは、これらをsymbolic linkを張り直すことによって使い分ける仕組みがあります。
sudo update-alternatives --config libblas.so.3
と入力すると、
% 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、さもなければ選択肢の番号のキーを押してください:
のように表示され、どのBLASを使うか選択することができます。単にインストールした場合はUbuntuが定めた優先度に従って選ばれるようで、openblasが選択された状態でした。

これを切り替えてnumpyで5000x5000の逆行列を計算させてみて、速度がどうなるか計測してみました。環境は、core i7 3770T で、VMwareを使ってメモリを4G、CPUコアを4個与えた状態で行いました。

まずreference BLASで。
% python
>>> from numpy import *
>>> from time import *
>>> a=random.rand(5000,5000); t=time(); a=linalg.inv(a); time()-t
241.60200095176697
このように241秒かかりました。

ATLASに切り替えてみました。
% python
>>> from numpy import *
>>> from time import *
>>> a=random.rand(5000,5000); t=time(); a=linalg.inv(a); time()-t
32.59469819068909
32秒に高速化されました。しかし、topでCPUを見ると100%となっており、どうやら一つのコアしか使っていないようです。

最後にopenblasです。
% python
>>> from numpy import *
>>> from time import *
>>> a=random.rand(5000,5000); t=time(); a=linalg.inv(a); time()-t
6.014795780181885
6秒まで高速化されました。topのCPU表示は400%となり、4コア使って計算しているようです。

もともとテキサス大学の後藤先生という方が開発したgotoblas(ごとうブラス)という高速で有名なパッケージがあったのですが、後藤先生がIntelに移られて開発が中止してしまい、それを有志が引き継いだのがopenblasです。後藤先生は現在はIntelの商用BLASであるMath Kernel Libraryの開発をされているようです。

最後に、ATLASに関して少し注釈を述べておきます。
ATLASはAutomatically Tuned Linear Algebra Softwareの略で、ライブラリのmake時にそのCPUのコア数やキャッシュサイズなどを調査し、それに最適化したライブラリを生成する仕組みです。すなわち、本来バイナリパッケージで入れるには適さないもので、ATLASの真の性能を引き出すには計算を行うCPUでライブラリをmakeし直す必要があります。
また、ATLASはLAPACKの一部を高速化したものを含んでいて、ATLASをインストールするとATLAS版LAPACKがインストールされます。
% sudo update-alternatives --config liblapack.so.3
alternative liblapack.so.3 (/usr/lib/liblapack.so.3 を提供) には 2 個の選択肢があります。

  選択肢    パス                                    優先度  状態
------------------------------------------------------------
* 0            /usr/lib/lapack/liblapack.so.3             10        自動モード
  1            /usr/lib/atlas-base/atlas/liblapack.so.3   5         手動モード
  2            /usr/lib/lapack/liblapack.so.3             10        手動モード

現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 
しかし、このように優先度が低くなっており、デフォルトでは使われていません。これがUbuntuの(というかDebianの)開発チームの見解ということでしょうか。
OK キャンセル 確認 その他