2008年6月21日土曜日

梅雨時

大阪府が相変わらずいろいろネタすぎる。こないだちょっととはいえ府民税払わされたからなんか見ててはぁ・・・って感じだ。職員側もテレビ入ってるのによくいうよな~あんなこと。自分らの給料で「10パーカットされたら生活が成り立たない」とかいっちゃってもお高い給料の出所である府民の反感買わないとか思ってるなら非常識すぎるだろう。よくしらんが公務員が労組つくっていいのか?

あと一月ぐらいである程度結果出さないと夏の学会がヤヴァイので今週末は引きこもり。ひたすらNRGのプログラム作成中。不純物が一個から二個にふえるだけで、条件分岐がアホほど増えてややこしくなるし、扱うデータ量が冪乗で増える。やめてもうメモリの残量が0よ。メモリ節約のため疎行列を一次元配列に落とし込んで使う方法を考えるのに頭疲れた。

ちなみに64Mのメモリで倍精度実数を800万個保持できると考えておけばいいとの噂。それが本当なら、ウチんとこのは最大4Gのはずなので4億個ぐらいは保持できるのかな。でもメモリもスタックとかヒープとか種類あってそれぞれに上限あったり、変数の宣言のしかたとか、スコープによって格納される場所が違うとかいうからどうなんかなぁ。Fortranの場合は、翻訳する際にサイズが決まるような変数やsave属性がついてる変数についてはスタックに大部分保持されるとか聞いた。なのにLinuxの場合スタックのサイズはデフォルトで8Mぐらい。なのであんまり大きい配列をsave属性で宣言するとスタックオーバーフローしてSegmentation faultとか文句いわれたりするらしい。(でも、こないだ明らかにスタックサイズ越えてる配列あつかっても大丈夫だったんだが。コンパイラの仕様にもよるんだろうな。なんかmodule内で宣言すると、スタック以外に保持される場合もあるぽ)でかい配列を使いたいときにはallocatable属性にしといて動的に割付するとヒープに保持されるので、少々でかくても大丈夫らしい。あとLinuxの場合、ulimit -aとすると、メモリの上限関連の情報を出してくれるらしい。どーしてもスタックにでかいデータを格納する必要があるときはulimit -s 16384のようにスタックの上限を自分が必要なサイズにまで引き上げるという方法もあるっぽい。

そんなかんじでひたすら座業。運動不足解消のために椅子ではなく、買ったきり戸棚に押し込んでたバランスボールに座ってみる。んー腹筋に効くかも知れん。

0 コメント: