chainer, cuDNN on ubuntu 14.04

cudaは,CUDA 7.5 Downloads | NVIDIA Developerあたりから落として入れる.
私はネットワークインストーラを選択して入れた.入れ方はダウンロードリンクのすぐ下に書かれた通りにやればOK.
なんか,nvidiaドライバもこれで入る.入ったかどうかは

$ lsmod | grep nv
nvidia_uvm             77824  0 
nvidia               8544256  1 nvidia_uvm
drm                   344064  5 i915,drm_kms_helper,nvidia

みたいな感じで入ってればいいんじゃないかしら.
記憶にないけど,なんかnouveauは入ってなかった.
私のマシンはオンボードのIntelグラフィックコントローラとGeForceの両方を搭載しているので,多分最初にubuntu入れる時,グラボを使わなかったんじゃなかろーかと.よく知らんけど.

cuDNNをNVIDIA cuDNN | NVIDIA Developerから落としてきて入れる.
登録は必須っぽいから,仕方なくやる.

cudnnのtar ballを解凍したら,cudaというディレクトリができるので,cudaのインストールパスにコピる.
多分,デフォなら /usr/local/cuda あたりにあるはず.

chainerを入れ直す.
chainerはキャッシュを使うとコンパイルし直してくれないっぽいので,キャッシュを無効化して入れる.

$ pip install chainer --user --no-cache-dir

ローカルに入れない場合は,userオプションを抜いてsu権限でやる.

うまくいけば,pythonから呼び出した時にエラーが出なくなる.

>>> from chainer import cuda
>>> cuda.zeros(1)
array([ 0.], dtype=float32)

Adobe Readerの「最近使用した場所」を保存させない

編集>環境設定>文書 にある 「最近使用した文書にリストする数」を0にすると,開いたファイルの履歴は残らないものの,そのファイルまでのパスは保存される.
パスはレジストリの,
[HKCU\Software\Adobe\Acrobat Reader\11.0\AVGeneral\cRecentFolders]
の配下に「c1」「c2」…「cX」という名前のキーとして作成される.
そこで,cXというキーを全て削除すると,履歴は消える.

履歴を残さないようにするには,以下の手順で,キーに書き込みできなくしてやれば良い.

  1. cRecentFoldersを右クリックして出てくるメニューから,アクセス許可を選択.
  2. 詳細設定,のボタンをクリック
  3. アクセス許可のタブの中の「継承の無効化」ボタンをクリックし,削除を選択
  4. 開いている2つのダイアログ両方のOKを押して設定保存して終了

ubuntu 14.04 の deja-dup で su 権限が必要なバックアップを samba 上に残す

gksudo を使う方法 → ホームディレクトリに smb: というディレクトリが掘られ,サーバ上にバックアップできない.
gksu を使う方法 → gksudo gksu deja-dup-preferences では上と同じ現象.gksu を素で使うなら,GUI でログインできるようにしても変わらんと思ったので,今回はそっちの方法.

手順

  1. rootにパスワードを設定する
    sudo passwd root
  2. lightdm にマニュアルログインを追加
    +greeter-show-manual-login=true
    

    して,lightdmを再起動

    $ sudo service lightdm restart
    

    ちなみに,SeatDefaults セクションに書けば良いので,こっちに書いても良い.
    何故か,user.confではダメだった.

    [SeatDefaults]
    greeter-show-manual-login=true
    
  3. 設定ウィンドウのバックアップを起動し,普通に設定.

SKK で Zero Width Space を入力する.

Zero Width Space は, U+200B または ​,​ など.
http://www.unicode.org/charts/PDF/U2000.pdfなんかを参照.
ここでは,ZWSPと書かれている.
簡単には,

  • 数値文字参照で文字を記述
  • ブラウザで表示
  • ノートパッドへコピペ
  • 該当以外の文字を消した上で全コピー
  • skkの単語登録のダイアログ内でC-YやC-Vなどでペースト(昔はこれでskkimeが落ちていたけど,skk-fepでは大丈夫)

で,何に使うのかっちゅーと,PPTのテキストを1文字ずつアニメーションで出す時,句読点のところだけ時間かせぎするために使うのであった.

dockerをproxy越しに起動する on debian jessie

Ubuntu 15.04 でかつProxy環境で、Dockerを使う場合の落とし穴 - Qiita
これだと思うんだけど,なんかリンク先の記事が404 Errorになってたので探した.

Controlling and configuring Docker using Systemd - Docker Documentation

ざっと言うと,upstartを前提にした古いubuntu向け情報がいっぱい出てくるけど,それではうまくいかないよ.だってsystemdだもん,
ということらしい

CUDA on Ubuntu

ただのメモなんで,読み解いて使ってね

nouveauと競合

  • Ubuntu desktopをnvidiaボード搭載マシンに入れると,標準でnouveauが入るが,CUDAを動作させられないので外さないといけない
  • Nouveauを入れたままNVIDIAプロプライエタリドライバを入れると,Xが起動しなくなった
  • Nouveauを消すとX関連が依存関係によりまとめて消えた
    • 二度手間になるので,minimumから入れた方が早いかも

プロプライエタリドライバ導入

  • http://www.nvidia.co.jp/Download/index.aspx?lang=ja
    $ sudo ./NVIDIA-Linux-x86_64-XXX.XX.run

    上のURLから,カードに合ったバージョンが入手できるはず
    この手順のあとに,lightdmなどX環境を入れる

CUDA導入

  • https://developer.nvidia.com/cuda-downloads
  • deb (local) でやってみる
    $ sudo dpkg –i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
    $ sudo apt-get install nvidia-prime nvidia-XXX.XX-updates-dev
    
  • 念のため,関連ドライバを改めて入れてみた
    $ sudo apt-get update
    $ sudo apt-get install --upgrade nvidia-settings
    $ sudo apt-get install cuda
    

python types.MethodType

自作モジュールに問題にチューンした処理を追加しないといけないことがあって,types.MethodTypeでメソッドを追加しようとした話.
自作モジュール内でimportされたモジュールを使う時,どうすればいいのかなー,とか,自作モジュール内のimport時につけた別名と被ったらどうなるのかなー,とか調べてみた.

おおむね予想通り.
自作モジュールを丸ごとimportしてたら参照できるけど,from/importでクラスしか取り込んでなかったら,別途,importしないといけない.
別名が被ったところで,スコープが被るわけじゃないから,人が見て分かりにくいことを除けば問題なくスコープ内のモジュールが呼び出される.

ということを全部は反映してないけど,簡単な使い方メモ.
これは,unbundle版.

import numpy as np
class MyModule:
    def test(self):
        return np.array([1,2,3])
import types
import mymodule

def new_test(self):
    return mymodule.np.array([4])

mymodule.MyModule.additionalMethod = \
    types.MethodType(new_test, None, mymodule.MyModule)
mymod = mymodule.MyModule()
print mymod.test()
print mymod.additionalMethod()

実行結果

$ python mydriver.py
[1 2 3]
[4]

Vimとシェルと私

vimまたはgvimからシェルを新しいタブで呼び出して編集とコンパイル/インタプリットをvim内で完結できたらいーなー,と思って調べたら,満足する解が見付からなかったという話.

前提:私の考え方は,この方とかなり近い→シェルを求めて三千里~悠久のvim編~ - Alone Like a Rhinoceros Horn
ただしvimもemacsも編集内容によって使い分けている.

ともかく私の我侭は

  • zshを実行したいよ
  • :shellでコマンドラインを残してvimに戻れないのは有り得ない
  • screenやtmuxみたくCtrlショートカットの1つを占有されると,何に割り当てても困ることが多い
    C-a→数字のインクリメントは結構よく使う
    C-t→texファイルの編集はemacs+evil+YaTeXなので,コンパイルができなくなる
    などなど…

結局辿りついたのが,このweblogにも,たまに書いているxmonadというタイル型ウィンドウマネージャを入れて右Altのみをmodキーにするというもの.
Vim/Emacsやshellは左手で操作し,それらの間の遷移は右Altで遷移する,と.
バッファ切り替えの次元が1次元増えるような操作感なので,慣れないと厳しいかも知れんけど.

で,現状の課題は,VimShell作者のShougoさんもPresentation file · Shougo/vimshell.vim Wiki · GitHubで書かれているけど,
zsh上で入力した文字列をバッファに取り込めないこと.
vimに持ってくるのに,タイル型WMを使ってるくせにマウスが必要なのがイマイチだ.
はっきしいって,ターミナル側でC-kしたものをOS(?)のクリップボードみたいなところに格納してくれれば,Kaoriya版もってくれば,"+pとかで貼り付けられるんだけどなー.

異体字を含む文書をLaTeX→pdf

まず,otfパッケージを入れて,CIDコマンドを使えるようにする.
otfというのは,Open Type Formatのことらしい.

\usepackage{otf}

...

\CID{CIDCODE}

CIDの探し方は,私の場合は,まずunicodeを調べるところから.
ここで調べられる→資料室 - 有限会社その弐 より 資料室 - 有限会社その弐
見るべきは16進数のコード.
例えば,邉の場合は,9089

で,Unihan Database Lookupに文字コードを入れてLookup.
出てきた結果のうちRadical-stroke IndicesというところのkRSAdobe_Japan1_6のうち,C+6930+162.4.13というやつの+と+に囲まれた6930がCIDみたい.

なので結局,こう書けばいい.

\usepackage{otf}

...

\CID{6930}

最近,柗という文字で困ったので調べた...