J

2004 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 12 |
2008 | 01 | 02 | 04 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 03 | 04 | 05 | 06 | 07 | 08 | 12 |
2013 | 01 | 02 | 03 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
2014 | 01 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 02 | 03 | 04 | 05 | 06 | 07 | 10 | 11 | 12 |
2016 | 01 | 02 | 04 | 05 | 06 | 07 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 05 | 06 | 07 | 08 | 09 |

ホーム

日記内の"morihyphen.hp.infoseek.co.jp"へのリンクは切れてます。必要な場合はお手数ですが int.main.jp へ書き換えをお願いします。

TODO: ファイル名確認を忘れないこと > 自分

twitter

 | 

2007-05-27

光が繋がりました。こうして僕もまた廃人へ一歩近付いたと言えるでしょう。


しかし光ってほんと速いのだなー。今までADSLと光ってあんま変わらんのでは?とか思ってたのは間違いだと思った。

wmii

そういえばすっかりwmii使うようになってしまった。

いや、うん、しかし、今の使い方だったら別にwmiiである必要性は無いんだけど…

Haskell

そういえば最近Haskell真面目に勉強したほうがよいような気がしてきた。

理由は…色々。今の僕ならHaskellの素晴らしさが理解できるような気がしたので。6月はHaskell強化月間にします!(今日から初めないあたりが既に終わっている)

でもどうやって勉強したらいいものか。とりあえずdarcsを使うところからかな…(すごい遠回り)

(…ここで10秒ほどdarcsのソース見た)

うーん。Haskellで書かれたソース見てるといつも思うのだけど、なんか全体的にIOモナドになってしまってるのは、そういうもんなのかな…

あとHaskellの人は literature なコード好きなんかな…


↓とりあえず今日のHaskell正規表現の使いかただけ。

module Main (main) where

import Text.Regex

main = case matchRegex (mkRegex "a(.*)") "aaaa" of
         Just a -> putStrLn $ concat $ "a":a
         Nothing -> return ()

計算の分散

最近計算の分散について考え気味。

僕はメモリは共有してない方が萌えるのでそっちっぽい話。


僕がインターネットと距離を置いてるあいだにErlangとかが流行ってたらしいけど、ああいうのは僕としては結構どうでもよい。と、いうのは、まあ、別にプロセス起動だとかスレッド起動だとか、メッセージのやりとりだとか、そういう部分が簡単になったところで別にそんなに嬉しくないからだ。(←ちゃんと勉強してないのでこういう偉そうなことを書くのはよくない)

いや、うん。スレッド起動とか、メッセージ通信とかは、Cのライブラリにしたとしても、そーれほど苦痛なものになるわけではない。多少型チェックに弱いとか、書きにくさとか、うっかり変な変数共有してた…とかはあるけど、C使いの人なら、そのぐらい日常茶飯事だから、どうでもいいよね。

そうじゃなくて、データ構造の話。


メモリを共有してないCPU(つか具体的にはアレ←全然具体的じゃない)に処理を分散させようと思うと、なかなか、これがめんどい。普通のコードならば、

  1. とりあえず動くものを
  2. ベンチ
  3. ボトルネックをぐぎゃー

となるのだけど、分散メモリCPUの場合は、「とりあえず動くところ」までが遠い場合がある。

  • 木とかリストみたいにポインタ(参照)でリンクするのが基本になってるデータ構造がそのまま使えない(CPUごとにアドレス違うよ)
  • 配列とかもランダムアクセスされると、メモリ転送のコストが大きくなる
  • 別CPUで処理する部分は、メッセージ通信とかの処理を入れないと

等々。「とりあえず動かす」レベルにするだけでも、データ構造の見直しとかが必要になる。


いまのところは、ここらへんは人力でネチョネチョやるしかないのだけど、これってなんとか言語レベルでサポートはできないかなー、というのが、最近3分くらいの思考のネタ。


で、だーっと考えつつ、↓ここらへんを読みつつ、

http://itpro.nikkeibp.co.jp/article/COLUMN/20070501/269948/?ST=develop&P=2

データ構造のほうに、並列性を記述というのは確かになんかアリっぽなー。


例えば、二分木の場合

data Tree = Node (Tree,Tree) | Leaf 

こういうのがあったとして、左側と右側はデータ的には並列してるので(←あやしい言葉だなー)、

data Tree = Node ( : Tree,Tree : ) | Leaf 

なんかこんな感じで、それを記述できて、こういう風に書いておくと、参照がポインタを使わない ベースアドレス + オフセット という形で表された上に、コンパイラとアロケータが協力して、なんか左側と右側をメッセージ通信にイイ感じになるようなサイズ、配置にしてくれるとか、なんだかそういう素敵な。


…いや、そんなのがあって嬉しいか?実はあまり嬉しくない。並列してまで最適化したいような部分のことを考えれば、シリアライズしてるオーバーヘッドなんて結構どうでもよいので、「普通のデータ構造 + シリアライザ」でも体力と時間さえあればあんまり困らない。


困るのは…やっぱ、アクセスパターンが直線じゃない場合なんだよなー。「1byteロード → 計算 → 1byteストア」のループを並列にするのはまあ、結構気合いでどうにでもなるのだけど、「3x3」の領域に対して計算とかになると、なかなか綺麗に割れなくて、それ専用のルーチンが必要になったり、「25x25の領域にランダムアクセス」とかになると、毎回まるごと転送するのはコストが大きいし、だからといって、毎回必要なだけ転送するというのも難しく…。


なんかひとりごとだNE!ループからアクセスパターンを解析みたいなのをもうちょっと一般的にして…なんか自動化できないかな…

自動的に解析するのが無理だとしても、「アクセスパターン記述子」みたいなのを書いて、それに対する転送ルールみたいなのを書けば、なんかうまくやってくれるとかできないかなー。

…少なくとも僕にはできない。

現在のプログラミング言語は、メモリの構造を隠蔽して、抽象化した構造を提供するほうに進化してきたと思うのだけど、メモリ分散なマシンになると、いきなり、「キャッシュに収まる量」とか「一回で転送できる量」とかそういう構造がモロに上位のデータ構造にまで影響を及ぼすようになるので、なんか、メモリ構造を隠蔽されてることが逆に弊害になる…ような気がしないでもない。


プログラミング言語のデータ抽象化機能は、メッセージ通信の構造すらも隠蔽できるようなぐらいにまで強力になるべきか、それとも、メッセージ通信のようなドロドロとしたものを表現できるくらいにまで強力になるべきか、それとも、それは両立できるのか?

とか書くとなんか、決めゼリフっぽいけど、「ドロドロとしたものを表現できる」というのは、「ドロドロとしたものを抽象化できる」ということなので、両立して普通だと思った。


まとめ : ふつうにCore2使ったほうがいい

んん。文章がわかりにくい?けどリハビリとしてはこんな感じかな…

飴 2007/05/27 18:08 廃人!廃人!!(*゜∀゜)ノシ

w_ow_o 2007/05/28 03:24 (*゜∀゜)ノシ

通りすがら通りすがら 2007/05/28 17:29 メモリ非共有型の自動並列化はスーパーコンで研究されていて、Fortran2008にはCRAYのCoArray機能(ループで参照する配列をプロセッサごとに分割し、依存する部分は同期を取ってコヒーレンシを保つ、ことをコンパイラがする)が組み込まれる予定です。実験的な言語であれば色々あって、ZPL[http://www.cs.washington.edu/research/zpl/home/index.html]とか近いかもしれません。
ただ実際はみんなMPIを使っているような気がしますが。
そういえばFortressではライブラリでアーキテクチャごとの最適化を用意して、アルゴリズムの記述は統一出来るようになるそうです。
すでにご存知なら失礼しました。

wowo 2007/05/29 13:41 > ZPL
おお確かにこんな感じのが近いです。ちょっと調べてみます。

> Fortran2008
このへんの技術はやっぱりFortranが最先端なんですかねー。我々は「Fortranは世界最古のプログラミング言語」という偏見を捨て、ループ・配列最強言語として見直す必要があるのだ!
というか、それをやってるのがFortressなんか…

> すでにご存知なら
いえいえ、僕はこのへんの話は全然知らないので、上の話は、「こーやって適当に書いておけば、誰か有用なリンクでも教えてくれたりしないかなー」という気分で書いてました。情報どうもありがとうございます。

あと、あんまり関係無いですが、スパコンっていつぐらいから「スーパーコン」って略すのが標準になってきたんでしょうか?「スーパーコン」っていう響きを聞くとなんか脱力してしまうのですが。

トラックバック - http://d.hatena.ne.jp/w_o/20070527

2007-05-11

なんか寝てた。

会社行って帰って寝るだけの日々。

仕事日記

まあ色々すごい。僕はこんなところいててよいのんかなー。

とりあえずバイトで来た人が僕よりできる人で困る。なんかドラゴンボールみたいな世界。

そんなんじゃあかんよ

くだらない文章を書いてないとなまるのでよくない。

とりあえず明日は燃えないゴミの日だということを忘れないこと。

methanemethane 2007/05/16 16:45 うはw
今の俺と同じ>こんなとこにいていいんかな?

まぁ、採用決めたのは会社側なんだからと割り切って、思いっきり勉強させて
もらいましょう。

w_ow_o 2007/05/27 08:37 そっちもそうなのかー。いや、まあ、ほんとありがたいことですよ。

トラックバック - http://d.hatena.ne.jp/w_o/20070511

2007-05-05

でじたるでばいど

そういえば大阪から返ってきた。


親戚とかとうちの親兄弟とかがふつーに画像とか動画とかをDVDやらCDで提供してて困る。

何が困るかというと、DVDレコーダの使いかたがわからない(僕が)。


色々と考えかたを改めないといけない。

wmiifs

とりあえずあるならやっとかないとなー、ということで。

http://morihyphen.hp.infoseek.co.jp/files/wmiifs.tar.gz


まあ、そのまま。

FUSEを使ってwmiiのファイルシステムを本物のFSにするというものです。


と、それだけだとアレなので、詰まったところとか。


FUSEの read とか write の戻り値は予想とは若干違う動きをする。

readの場合、要求したサイズ分を返さなかった場合、足りない分は0で埋められる。例えば、4096バイト要求されて、20バイトしか返さなかった場合、4076バイトは0で埋められて、writeの戻り値は、4096になってしまう。

なんでそういう実装になってるかわからんのだけど、fuse.hによると、そういうときは、direct_ioオプション付きでマウントすればよいらしい。マウント時に付けるのが面倒なときは、openで、fuse_file_info の direct_io を1にしとけば良いっぽい。


あと、ixp(wmiiに付いてくる謎のファイルシステムライブラリ)で、何かreadしながら、何か別のファイルをstatとかすると変な挙動する。よくわからん。

alloca

allocaの'a'って自動変数とかの Automatic の a だったのか!

2007-05-04

wmii

最近横に長いディスプレイを使うことが多くて、横幅がもったいないなーと思ってたのでwmiiを使ってみることにした。

簡単に説明しとくと、ウィンドウを横に並べたり縦に並べたりがキーボードだけでできるというウィンドウマネージャ。


WMについて考えるのなんか久しぶりだなー。もうちょっと使ってみてから乗り換えるかどうか考える。


wmiiの面白いところとして、ファイルシステムもどきの仕組みを使って設定ファイルを純粋なシェルスクリプトにしてるという点が挙げられると思う。(純粋なシェルスクリプトて何?awkはシェルスクリプトの一部に含まれますか問題)

まず、基本として、wmiirというツールがありますと。これがファイルシステムもどきを実現してる。

$ wmiir ls / # wmiiファイルシステムのルートディレクトリを列挙
client/
colrules
ctl
event
keys
lbar/
rbar/
tag/
tagrules
$ wmiir read /ctl # 現在の設定とかが見れる
view 0
focuscolors #ffffff #153F1F #2A7F3F
normcolors #222222 #5FBF77 #2A7F3F
font -shinonome-*-*-r-*-*-14-*-*-*-*-*-*-*
grabmod Mod1-
border 1

んで、/keys にキーの名前を書き込んでおくと、キーが登録される。

$ wmiir read /keys
Mod1-Control-Return
Mod1-Control-a
Mod1-Control-d
(...)

/event を read すれば押されたキーイベントが見れる。

$ wmiir read /event
Key Mod1-Control-l   (Alt Control lを押した)
Key Mod1-Control-h   (Alt Control hを押した)

んで、適当に制御とかを組み合わせて色々できる

$ wmiir xwrite /ctl view aho- # 表示するデスクトップを"aho-"デスクトップに変更
$ wmiir xwrite "/lbar/..."    # よくわからん

ここらへんが、設定ファイルのために作られた仕組み。設定ファイルのためのファイルフォーマット等は存在していない。

ふつーにインストールすると、/usr/local/etc/wmii-3.5/wmiirc とかに設定ファイルがあってそれがシェルスクリプト。(rc.wmiiとかが多分Plan9のrcのなんか)

wmiir read /event |
while read event; do
	set -- $event
	event=$1; shift
	Event_$event $@ 2>/dev/null
done

というループがあって、それがなんかぐちゃぐちゃ(説明しろよ)。これより上の部分はこのループを回すための準備みたいな感じで。

僕は今aptitudeにマインスイーパ機能が付いてることを知った。(C-T p)

トラックバック - http://d.hatena.ne.jp/w_o/20070504

2007-05-03

大阪に来た

そういえば前回大阪に行くとか書いたら、大阪に就職したのかと勘違いした人がいてたようなのでフォローしておくと、前回大阪に帰ったのは姉の結婚式のためで、別にこっちに出戻りしたとかじゃないです。

h_sakuraih_sakurai 2007/05/05 17:29 この大阪に来たはどっちなんだー問題が浮上みたいな。

w_ow_o 2007/05/06 03:04 ふむ。確かに書いてないですな。
そこらへんはうやむやにしてあるということで。

トラックバック - http://d.hatena.ne.jp/w_o/20070503

2007-05-02

下流志向

一ヶ月くらい前に読んだ。時間微妙にあまってたのでなんか軽く読めるのでも探すかー。とか思って適当に読んだのだけど、なかなか感銘を受けてしまった。

なんで人はNEETやるのか、仕事をすぐやめるのかとかそこらへんの話が(他の本の引用だったけど)、僕のNEET魂と比較しても、なかなか的確だなー、と思った。まあ、なんか、「仕事するメリットデメリットと、NEETするメリットデメリット考えるとNEETになるほうがよいです」とかそんな感じ。

んで、そういう話を絡めつつ、「なんでも自己責任にしてしまうのがどれだけ危険なのか」というような話で、まあ、最近考えが変わったのはそこらへんの影響を受けてると思う。


なかなか良かったと思いつつも、こういう本の感想を書き始めると本格的にぶろぎゃーに近づきつつあるよなー、とかそういう。

トラックバック - http://d.hatena.ne.jp/w_o/20070502

2007-05-01

仕事日記

まあ色々すごい。

なにがすごいかというと、なんかNDSよりもPSP派が多い。

 ディスガイア2

結局封印しきれずに一週終わってしまったのだった。

こんどこそ封印するよ!アイテム界とか行かないし!つかこのゲームそんないっぱいエンディングあるんか。


いつごろからだろうか。僕らがレベル上げの間中、「あー、これってただの電子データでこの時間は無駄な時間なんだなー」とか考えるようになってしまったのは。

RPGのストーリーとかシステムとかなんてのは、結局、そういう無常感をごまかすためにあるといえるわけで、しかし、それは、やはり、RPGにとっては面白さのコアではない部分。シューティングにとってストーリーが、メインではないように、RPGにとってそれはメインではなく、やっぱりネチネチとレベル上げするのがRPGというゲームなんだよなー。もはや全然RoleをPlayingしてないけど。というようなことを認識させられるゲームでした。


まとめ:原田絵がよかった。

飴 2007/05/02 22:05 萌え、でしたか。(最後しか読んでない)

w_ow_o 2007/05/03 01:47 萌えとは違うと思うのだよなー。

トラックバック - http://d.hatena.ne.jp/w_o/20070501
 |