No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 1152 | 1153 | 1154 |...| 1359 | 1360 | 1361 || Next»

64bit版の ubuntu 入れる

メモリが多いので 64bit 版がほしくなった.で,ローカライズド版の64bitがあるのかどうか知らんけど見つからないので本家の 64bit 版を入れた.インストール自体は何の問題もなし.

http://www.ubuntu.com/getubuntu/download

そんで,フォント周りとか気に食わないのでJapanese Teamのパッケージリポジトリを登録して追加パッケージをインストール.これも今のところ普通に動いている.

http://www.ubuntulinux.jp/products/JA-Localized#repository

グラフィックまわりは, アプリケーション→追加と削除 で nVidia binary X.Org driver ('new' driver) をインストール,制限つきドライバの管理でドライバを有効化,sudo nvidia-settings で TwinView 設定,という流れでWUXGA x 2 という構成で動いた.とりあえず前回インストール時に GNOME のデスクトップへの切替で解像度がおかしくなる現象に見舞われたので,今回はディスプレイの解像度と座標を nvidia-settings で固定値にしておいた.ついでに システム→システム管理→モニタとグラフィックスカード で3840x1200の解像度を選択しておいた.

論文書くのに LaTeX がないと何も出来ないので,とりあえずいろいろと突っ込んだ.途中のシンボリックリンクはエラー回避の誤魔化し.

sudo apt-get install latex-env-ja
sudo apt-get install latex-extra-ja
sudo apt-get install texlive-latex-extra
sudo ln -s /bin/true /usr/bin/mkcfm
sudo apt-get install gs-cjk-resource cmap-adobe-{japan1,japan2,cns1,gb1}
sudo apt-get install xpdf-japanese
sudo ln -s /usr/bin/dvips /usr/bin/dvipsk
sudo dpkg-reconfigure ptex-jisfonts

現状,A4で10ページ程度ではあるけれど, platex, bibtex, platex, platex, dvipsk のコンボが1秒で終わるのはありがたい.Linux だからなのかマシンが速いのかは知らんけど,とりあえずこれで生産性が向上する.

健康診断

どうしても血圧計とかに慣れることができない.血圧・脈拍ともに通常時の1.5~2倍に跳ね上がる.どこかに非接触式の血圧計とかないのだろうか・・・ 絶対に技術者の怠慢だと思うぞ. 

宇治まっ茶のチロルチョコ

生協に行ったら大量に売っていたのでおもむろに45個入りを箱買い.抹茶が濃くてよい感じ.

でふらぐ

UltraDefragとかいうのを試した.速かった気がする.でもディスクの使用領域が小さかったからかも知れない.

とりあえずこれで Linux 用パーティションが用意できるのでさっさと Linux 入れよう.

青梅の梅

写真でも取りに行こうかと思ったらまだ咲いてないみたい.早く咲かんかな…

Haskell で並列計算を試す

Control.Parallel の par を使うと第一引数を別スレッドで評価してくれる(かも).ということで,試した.

import Control.Parallel
 
homP op f x = h x
  where
    h [a] = f a
    h (a:x) = fa `par` (hx `seq` (fa `op` hx))
     where fa = f a
           hx = h x
 
mapP f = homP (++) (\x->[f x])
 
chunk n [] = []
chunk n x = take n x:chunk n (drop n x)
 
split p x = chunk (div (length x + p - 1) p) x
mapS f dxs = mapP (map f) dxs
reduceS op dxs = homP op (foldl1 op) dxs
 
 
main = print $ reduceS(+) $ mapS f $ split 32 [1..10000]
 
f n = fib 16
 
fib 0 = 1
fib 1 = 1
fib n = fib (n - 1) + fib (n - 2)

基本,split でチャンクに切り分けて,homP で各チャンクに対する計算を並列評価する.

par の型は a -> b -> b で,デフォルトだと最初の引数を完全に無視する.んで,コンパイルというかリンク時に -threaded をつけてやると別スレッドでの並列評価を試みるコードになってくれるらしい.あと,実行時に +RST -N2 とかやって, N オプションで生成するネイティブスレッドの数を指定する.

とりあえず上のコードを デュアルコアで動かしたら 2.5 秒が 1.5 秒になる程度の効果が現れた.確かに並列で評価してくれているらしい.

ちなみに,

main = print $ sum $ concat $ mapS f $ split 32 [1..10000]

としてあげると並列計算の効果が全く現れない.sum の計算が concat の結果を頭から消費していく形なので,前のチャンクの結果が sum で消費しつくされてからしか次のチャンクの評価が起こらない.なので,mapS f での各チャンクに対する map f の評価が逐次的にしか起きてくれず,並列計算にならない.と思う.とりあえず遅延評価があると思ったより面倒だなぁ.

«Prev || 1 | 2 | 3 |...| 1152 | 1153 | 1154 |...| 1359 | 1360 | 1361 || Next»
Search
Feeds

Page Top