読者です 読者をやめる 読者になる 読者になる

microbit (chibibit) block editor

micro:bit : Block Editor Documentation

CUDAのバージョンとVASP-GPUメモリリーク

P100が入った計算機が到着したのでセットアップした。VASP-GPUを走らせてみるとメモリリークを起こす。はじめ原因ははっきりしなかった。CUDAのマイナーバージョン(8.0.61)が問題のなかったもの(8.0.44)と違うことに気づき、古いバージョンをNvidiaのサイトのアーカイブからダウンロードしてインストールした。CUDA Toolkit Archive | NVIDIA Developer networkタイプのパッケージだと、結局最新のものがネットワーク経由でダウンロードされてしまう(要確認)ので、パッケージをまるごとダウンロード(localタイプ)する。1.8GB也。Nvidiaのサイトに書いてある以下の手順通りでバージョン8.0.44がうまくインストールされる。

sudo dpkg -i cuda-repo-ubuntu1404-8-0-local_8.0.44-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda

これでメモリリークが解決した。

Macの設定

zshにするには、環境設定Users & Groupsで自分のアカウントを右クリックして詳細設定から行う。
言語設定で日本語を入れる。キーボードショートカットで、Command+spaceをinput sourceの切り替えに割り振る(spotlightの割り振りを外す)。

フォント

Font BookでRictyをインストールする。
ライセンスによる制約でRictyはデータからフォントを自分で生成する必要がある。
フォントの生成、設定はこの辺を参照。
http://milanista224.blogspot.jp/2013/07/retina-emacs243.html
http://miyano-harikyu.jp/sola/devlog/2013/11/15/post-67/

Ricty Diminishedはフォントとして配布されているので、こっちのほうが簡単。
プログラミング用フォント Ricty Diminished

Macportsと開発環境

XcodeはAppStoreでインストール。それから

sudo xcode-select --install
sudo xcodebuild -license

Macportsをインストール
http://www.macports.org/install.php
http://guide.macports.org/#installing.xcode

XQuartzをインストール
https://xquartz.macosforge.org/landing/

OSのアップグレード時にはmigrationを行う。
https://trac.macports.org/wiki/Migration

ターミナルはiTerm2が使いやすい。iTerm2 - macOS Terminal Replacementからインストールする。もしくはportで

sudo port install iterm2

Emacsのためにoptionキーにmetaを割り振るには、profile -> keyで設定すればよい。+escを選ぶ。

gccのインストール

sudo port install gcc6
sudo port select --set gcc mp-gcc6

OpenBLASのインストール

sudo port install OpenBLAS +gcc6

このパッケージはblas, lapack, lapackeを含んでいる。/opt/local/lib/libopenblas.*がライブラリ。/opt/local/include/以下にヘッダファイルがある。

Python 2.7

sudo port install python27
sudo port select  --set python python27

(Jan 12, 2017) python27のインストールログによるとpy27-readlineのインストールをした方が良いらしい。

sudo port install py27-readline

Numpyなどのインストール

sudo port install fftw-3 +gcc6
sudo port install py27-numpy +gcc6 +openblas
sudo port install py27-scipy +gcc6 +openblas

OpenBLASに関しては、export OPENBLAS_NUM_THREADS=1を設定した方が安全かも。
Faq · xianyi/OpenBLAS Wiki · GitHub

IPythonはnumpy dependentなので、numpyのあとにインストール

sudo port install py27-ipython
sudo port select --set ipython py27-ipython

その他python library

sudo port install py27-matplotlib py27-yaml
sudo port install py27-h5py +gcc6

sphinx

sudo port install py27-pip
sudo port select --set pip pip27
pip install Sphinx --user
pip install sphinx-bootstrap-theme --user

dvipngはmactexのパッケージに含まれる。mactexをインストールしている環境で、portsからdvipngを入れると、matplotlibの数式記入でトラブルが起きる。

その他ツール

sudo port install tmux ispell sshfs

あたりをインストールsubversion, gitはすでに入っている。

dircolorsを使いたい場合は

sudo port install coreutils

で、gls、gdircolorsなどがインストールされる。

Ruby
OS Xrubyは入っているようだけど、travisを使いたい、ruby C-APIを使うときにこけるなどあればportからインストールする。

sudo port install ruby23
sudo port select --set ruby ruby23

gemでtravisのコマンドをインストール

gem install --user-install  travis
    • user-installする場合、~/.gem/ruby/2.0.0/binなどにPATHを通す必要がある。

Gnuplot

sudo port install gnuplot

aquatermのインストールでこけたので、

sudo port install gnuplot -aquaterm

として、aquatermをはずす。aquaよりwxtの方が良さそうなので、むしろaquaterm無くて良いかも。

Imagemagick

sudo port install ImageMagick

Mayavi。まずvtkをインストールしてから。

sudo port install vtk +python27
sudo port install py27-mayavi

v_simのコンパイルのためにgtkのインストール

sudo port install gtk2 intltool

emacs

El Capitanのemacs-appではvisible-bellによってウインドウ中央に空白が残ってしまうようになった。emacs-mac-appでは問題なし。

sudo port install emacs-mac-app

applications/macportsに入る。emacsのシェルのエイリアスを作る。

alias emacs="/Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs"

Commandキーをmeta keyとするためには以下の設定を行う。

(setq mac-option-key-is-meta nil)
(setq mac-command-key-is-meta t)
(setq mac-command-modifier 'meta)
(setq mac-option-modifier nil)

http://www.emacswiki.org/emacs/MetaKeyProblems#toc15

ターミナル内でemacsを使うとき(-nw)にフォントの設定あたりでコケるので、そのときは設定を読み込まないようにする。
http://stackoverflow.com/questions/3861857/emacs-check-for-no-window-system-in-emacs

(when window-system
  ...
)

flyspell-modeでispellの代わりにaspellを使う場合

sudo port install aspell aspell-dict-en

でインストールして、次の設定を加える

(setq ispell-list-command "--list")

参考: http://www.emacswiki.org/emacs/FlySpell#toc8


Tex環境

Texの環境はMacTexというのをインストールすればだいたい整うらしい。
http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?Mac
REVTexも入っているようだ。
http://publish.aps.org/revtex/revtex-faq
YaTeXはこれを参考に
http://salinger.github.io/blog/2013/02/04/1/
Skim. Preferenceのsyncを設定。
http://skim-app.sourceforge.net/


Time Machineで復旧した場合、MacTex環境が壊れるようなので、そのときは再インストールを行う。

Lapack Lapackeの使い方

lapackeのmake.inc

LAPACKLIB    = /opt/local/lib/liblapack.a
LAPACKELIB   = liblapacke.a

distutilでC拡張を書くときのsetup.py

    extra_link_args=['-lgomp',
                     '../lapack-3.5.0/liblapacke.a'],

cmake

CMake Tutorial | CMake
CMake by Example
CMake Useful Variables - KitwarePublic
Are CMAKE_SOURCE_DIR and PROJECT_SOURCE_DIR the same in CMake? - Stack Overflow
Best way to specify sourcefiles in CMake - Stack Overflow
CMAKE によるビルド自動化とテスト実行 - zonomasaの日記
CMake: 便利なコマンド・変数 - Qiita

cmake の使い方 - PukiWiki
cmake - How do you add boost libraries in CMakeLists.txt - Stack Overflow
c++ - Debug vs Release in CMAKE - Stack Overflow

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wall")
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake -DCMAKE_BUILD_TYPE=Debug ..
make VERBOSE=1

C++の参照渡しとCのポインタの値渡しの違いをマシン語で比較してみた結果 - Qiita

C-APIで作ったpythonモジュールのメモリリークのチェック

以下のサイトを参考にやってみる。
Using AddressSanitizer - Atomic Simulation Environment

Pythonソースコードはこちらから。
Python Source Releases | Python.org

export CC='gcc -fsanitize=address'
export CXX='g++ -fsanitize=address'
export LSAN_OPTIONS=exitcode=0
cd ~/code/pysanitize/Python-3.5.2
./configure  --prefix=~/code/pysanitize --without-pymalloc --disable-ipv6
make
make install
export PATH=~/code/pysanitize/bin:$PATH

setuptools, cython, numpyの順にインストールしていく。ソースコードPyPIからダウンロード。
setuptools 30.2.0 : Python Package Index
Cython 0.25.1 : Python Package Index
numpy 1.12.0b1 : Python Package Index

インストールはsetup.pyで行う。

python3 setup.py install --prefix=~/code/pysanitize

同様にmatplotlib, h5pyもインストールする。ただし、その前に以下のパッケージを先にシステムのパッケージマネージャでインストールする。

sudo aptitude install libfreetype6-dev libpng-dev libhdf5-dev

Index of Packages : Python Package Index
matplotlib 1.5.3 : Python Package Index
PyYAML 3.12 : Python Package Index

Ubuntu-mate 16.04の場合、デフォルトでシステムにインストールしているnumpyが邪魔をするので、setup.pyや実行するpython scriptのなかで、例えば以下のようにしてsys.pathから取り除く必要があるかもしれない。

import sys
del_i = []
for i, p in enumerate(sys.path):
    if 'dist-packages' in p:
        del_i.append(i)
    if 'local' in p:
        del_i.append(i)
for i in del_i:
    del sys.path[i]