2018/05/01(火)ubuntu 18.04 インストール(4) vim

vi大好きなのでvimを入れます。
sudo apt install vim
日本語の漢字コードの異なるファイルを自動認識するように、/etc/vim/vimrc.localを
set encoding=utf-8
set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8
の内容で新規作成しました。もちろん~/.vimrcでもOKです。

これで、デフォルトのコードがUTF8になり、JIS、EUC、SJISコードのファイルも自動認識して編集できるようになります。

追記(5/24)

18.04から、vimが賢くなってファイルの拡張子に応じて自動でインデントしてくれるようになったようです。しかし、自分はエディタが勝手に何かするのがとても嫌いなので、
set encoding=utf-8
set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8
filetype indent off
のように自動インデントをオフにする設定を加えました。この設定はどういうわけか/etc/vim/vimrc.localでは効果がないようで。~/.vimrcに書くことにしました。

2018/05/01(火)ubuntu 18.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
16.04まで残っていたdvipsk-jaは無くなったようです。何年も使ってないので問題ないでしょう。

その他文書作成関連のソフトウェアをついでに入れました。
sudo apt install gv
sudo apt install nkf
sudo apt install gnuplot
sudo apt install tgif
sudo apt install gimp
sudo apt install inkscape
sudo apt install mimetex
sudo apt install latexdiff

2018/05/01(火)ubuntu 18.04インストール (2) vmware tools

vmware toolsは、vmwareのゲストで
  • デスクトップのリサイズ、
  • ホストOSとのクリップボード共有(文字列のコピペが出来るようになる)、
  • フォルダ共有
などを実現するもので、ゲストへのインストールはほぼ必須です。16.04のときと同様、vmware標準で提供されるものは無視してopen-vm-toolsを入れます。
sudo apt install open-vm-tools-desktop
再起動後、デスクトップのリサイズもクリップボード共有もうまく動作しました。

共有フォルダは、vmwareの「設定→オプション→共有フォルダの有効化」で共有フォルダを有効にして再起動。
sudo vmhgfs-fuse -o allow_other -o auto_unmount .host:/ /mnt/hgfs
で/mnt/hgfs以下にマウント出来ました。永続的にmountするには、/etc/fstabで
.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,auto_unmount,defaults 0 0
と書くとよいでしょう。

2018/05/01(火)ubuntu 18.04 インストール(1)

ubuntu 18.04が2018年4月26日にリリースされました。

16.04以来2年ぶりのLTS (Long Time Support)で、5年間のサポート期間があります。半年毎にアップデートするのは面倒なのでLTSを愛用しています。

というわけで、18.04のインストールメモです。と言っても、2年前に書いた16.04のインストール日記
と大して変わっていませんが。それだけ成熟してきたということでしょうか。

Ubuntu 18.04 LTS (Bionic Beaver)から、 ubuntu-18.04-desktop-amd64-iso をダウンロードしました。

VMwareで作業しました。新規仮想マシンの作成→標準→後でOSをインストール。仮想マシンの種類はLinux Ubuntu 64bit。ディスクはデフォルトの20Gじゃ少ないので512Gに増やしました。メモリは念の為1Gから1.5Gに増やしました(5/16追記: VMwareのデフォルトの1Gだとインストールに失敗することがあるようです)。仮想マシンの設定でisoをマウントし起動。
  • 言語は「日本語」を選び、「Ubuntuをインストール」をクリック。
  • キーボードレイアウトは「日本語」「日本語」
  • 「通常のインストール」を選ぶ。
  • 「Ubuntuのインストール中にアップデートをダウンロードする」、「グラフィックスとWi-Fiハードウェアと追加のメディアフォーマットのサードパーティ製ソフトウェアをインストールする」をチェック
  • 「ディスクを削除してUbuntuをインストールする」を選ぶ。
  • 「インストール」をクリック。
  • TimeZoneは「Tokyo」を選ぶ。
  • 「ログイン時にパスワードを要求する」を選ぶ。
Ubuntu1804-2018-04-28-16-25-12.png

画像はインストール中に出てきたBionic Beaver君。インストールは全く問題なく終了しました。

ウィンドウマネージャはunityが廃止されてubuntu風にカスタマイズされたGnomeになりました。とりあえず端末を出すには、右下のBCGの痕みたいなアイコンをクリックして「端末」を選びます。右クリックして「お気に入りへ追加」するといいでしょう。

2017/11/08(水)kv-0.4.43とAVX-512による区間演算

久しぶりにkvライブラリを0.4.43にアップデートしました。

今回の主なアップデートは2つです。一つは、
の記事で書いたライブラリをkvに入れて、誰も使ってなかったと思われるgnuplot.hppを削除しました。

もう一つが重要で、AVX-512を使った高速な区間演算の実装です。AVX-512は、Intelの最新のCPUに搭載されている機能で、現時点では、
  • Xeon Phi Knights Landing
  • Skylake-X (Core i9 7900Xなど)
  • Skylake-SP (Xeon Platinum/Gold/Silver/Bronze など)
の限られたハイエンドCPUにしか搭載されていません。2018年末に予定されているCannonlakeで一般のCPUに搭載される予定になっています。AVX-512はいわゆるSIMD命令で、現在のAVX2 (256bitレジスタ) を更に拡張してレジスタ長を512bitとし、doubleなら8つのデータを同時に処理できるようになります。

ところで、AVX-512にはひっそりと(?)、「命令そのものに丸めモード指定を含んでいるような加減乗除と平方根」が搭載されました。精度保証付き数値計算で非常に重要な区間演算には、上向き丸めや下向き丸めでの加減乗除と平方根が必要です。従来は、演算を行なう前に丸めモードの変更命令を発行しており、これが高速化の妨げになっていました。直接丸めモードを指定できる演算を使えるならば、高速化が期待できます。具体的には、intrinsic命令で
  • _mm_add_round_sd(x, y, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC);
  • _mm_add_round_sd(x, y, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC);
  • _mm_sub_round_sd(x, y, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC);
  • _mm_sub_round_sd(x, y, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC);
  • _mm_mul_round_sd(x, y, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC);
  • _mm_mul_round_sd(x, y, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC);
  • _mm_div_round_sd(x, y, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC);
  • _mm_div_round_sd(x, y, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC);
  • _mm_sqrt_round_sd(x, x, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC);
  • _mm_sqrt_round_sd(x, x, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC);
の命令を使えば、加減乗除と平方根の上向き丸めと下向き丸めを直接実行できます。

新しいコンパイルオプションを設け、-DKV_USE_AVX512と付けると、これらのAVX-512命令を使って区間演算を実行するようにしました。

core i9 7900X + ubuntu 16.04 + gcc 5.4.0 という環境で、examples以下にあるtest-nishi.ccというある非線形回路の全ての解を求める計算量の多いプログラムを使って、ベンチマークをしてみました。すると、
計算精度(端点の型)コンパイルオプション計算時間
double-O310.81 sec
double-O3 -DKV_USE_AVX512 -mavx512f5.55 sec
dd-O354.10 sec
dd-O3 -DKV_USE_AVX512 -mavx512f21.42 sec
のように高速化されました。なお、kvには他にもさまざまなコンパイルオプションがあり、今回改めてそれらをまとめたページ(丸めモードの変え方とコンパイルオプションまとめ)を作成しました。このページの末尾により詳細なベンチマークのデータがあります。

AVX-512は8個のデータを並列で処理する能力がありますが、今回のプログラムでは全く並列化していません。うまく並列処理するようにプログラムを書けば更に高速化できる可能性もあります。まだAVX-512が使えるPCは身近ではありませんが、一年も経てば役立つようになるのではないでしょうか。
OK キャンセル 確認 その他