2009年11月19日木曜日

パブリックコメントfor文科省

文科省には1200通のパブリックコメントが届いたとか。
きのう出したパブリックコメントを一応アップ。身バレはさすがにアレなので一部伏字。文章もアレだし議論の詰め方も甘い…。書いてて自分は科学技術政策とかほとんど知らないなぁというのがよく分かった。

なんとなく今まで、自分が頑張っていることを外部にアピールすることや、政治的なニオイのする行動にかかわることは、若干気恥かしく、あまりするもんじゃないという意識があった。たぶん同業者のなかにはそういう人も多いんじゃないかと思う。昔、知り合いに「今日はこれとこれと頑張った」というようなことを話すと「頑張ったことはわざわざ人に言うもんじゃない、だまって評価されるのを待つべき」というようなことをいわれたこともあったし。なので口を閉ざし、黙って論文を書いていればそれなりに評価されるだろうと言う風に進んできたらこういうことが起きた。今回も「そんなことは研究者の仕事じゃない」と黙って耐え忍ぶのもありかもしれないけど、あとから「あぁーあのときになにかしておけば…」てのは嫌だから。



文部科学省
中村正春 副大臣殿
後藤 斎 政務官殿

事業番号13 競争的資金(若手研究育成)について意見を送らせていただきます。

私は○○大学○○研究科にて博士課程に在学し、○○○○の研究を行っております○○と申します。民主党政権が目指す科学技術政策「科学技術のフロントランナーを目指して」を拝見し、「モノから人へ」という理念とそれに基づく研究者への資金直接配分や若手への支援等の方針に非常に期待しております。しかし、今回の行政刷新会議の議論を拝聴し、若手研究者育成に対する予算の減額要求に関して強い危機感を覚えました。

特に行政刷新会議にて予算減額が要請された、
1) 日本学術振興会による、特別研究員制度、科学研究費
2) テニュアトラック制度
について意見があります。

私自身、特別研究員に本年度より採用され、その研究費によって数編の論文を出版し、国内外の学会に参加し発表を行ってきました。研究費を税金から頂いている以上、科学技術の発展に寄与せねばならないと日々真摯に研究を行っております。その研究費や月々の奨励費に関する「生活保護のようである」とのコメントや、博士取得者について「社会的に需要がないのに供給過多になっている」というワークグループ委員の発言は大変残念に思います。

日本の研究機関において、博士課程学生・ポストドクターといった私たち20代~30代の若手研究者の寄与は非常に大きいです。名称上、博士課程学生は単なる学生、ポストドクターは卒業後進路が決まらず研究室に残っている存在のように思われがちですが、実際は自ら研究テーマを設定し遂行する自立した研究者として活動しています。ですが、研究費とポストに恵まれておらず、非常に不安定な立場に苦しみつつ研究活動を行っています。

研究費に関して申し上げれば、特別研究員制度は博士課程学生が申請できる唯一の公募研究費であり、科学研究費のなかの若手研究はポストドクターが採択される可能性がある数少ない種別の科学研究費です。この2つの科学研究費を減らすことは、若手研究者の海外流出や自由な発想に基づくイノベーション創出の機会を奪うことにつながります。

またポストに関しては、常勤教員採用数が博士取得者数に比べて明らかに少ない現状では、テニュアトラック制度が最も現実的な制度だと考えます。大学における37歳以下の若手教員比率が年々減少している(平成19年度では21.3パーセント)現状を見ましても、テニュアトラック制度のように若手を積極的に採用する仕組みを整備・維持することが必要です。博士取得者がキャリアパスとしてアカデミックのみを追求することが慢性的なポスト不足を招いているかのような委員の指摘もございましたが、周囲の博士学生は企業への就職にも意欲的です。ですが、博士卒学生に関して「狭い専門領域ばかりを勉強している」、「コミュニケーション能力を欠くのでは」等の偏見を持っている人事担当者が多いため、企業は博士学生をあまり採用しない傾向があります。企業の40パーセント以上が博士課程卒の学生を、60パーセント以上がポストドクターを、そもそも採用する予定がないのが現状です。また日本企業の新卒最重視の姿勢が中途採用として扱われることの多い博士取得者とりわけポストドクターの民間企業就職を困難にしています。博士課程卒業後の民間企業へのキャリアパス形成、それに向けた博士課程在学中に企業が求める能力を備えることができるような大学カリキュラムの改革などは今後必要でしょうし、現場の学生としても望むところであります。しかし、この不況下では、テニュアトラック制度を縮小したからといって、民間企業への就職者数が増えるとは考えづらく、単なる若手研究者の切り捨てとなるでしょう。

科学研究費制度・大学制度に数々の旧弊があることは事実です。しかし、代替制度を運用する前に若手研究者育成関連の予算を削減することは、研究者の人材喪失につながります。知識・技術の引き継ぎが重要となる科学分野において1世代の人材を欠くことは、今後長きにわたり悪影響を及ぼすことでしょう。

また、民主党政権の掲げるCO2 25%削減等の実現におきましても、科学技術力の更なる増進とそれを担う若手人材育成は必須であると考えます。予算に限りがあること、削減が必要であることは理解しておりますが、とくに若手研究者人材育成に関連する予算は保守していただくよう切にお願いする次第であります。

2009年11月18日水曜日

事業仕分けの結果(科学技術関連)に対して思うこと

ここ2~3日、研究室では科学技術関連の事業仕分けの話題でもちきり。新聞では主にスパコンであるとか、GXロケットの話題がメインですけど研究室での話題は若手育成関連の予算削減。だって切実なんですもの。

私たち博士課程の学生が唯一申請できる公的な研究費は日本学術振興会というところが取り仕切っている「特別研究員」。この制度は、審査を経て採用された博士課程の学生に月々20万(税込)の奨励費と、年間上限を150万とした科学研究費(最近、理論系だと大体50~80万?)が支給されるというものです。博士課程の学生は身分でこそ学生ですが、自分で学会発表を行い、論文を書き投稿するなど自立した研究者としての働きを求められます。支給される科学研究費は主に学会への出張旅費や論文投稿料、必要な器材を買うことに費やされます。実験に比べてかかるお金が少ない理論系ですら国際会議に参加すると一回で30万、計算機として使うためのパソコンが1台40万以上(メモリ12Gまで増設とか数値計算用にいろいろカスタマイズするから)、論文一本投稿すると2万とか普通にかかるので、埋蔵金とか作りようがありません。ちなみに審査は結構キビシいです。審査委員会が開かれて、大勢の委員の採点の上で採否が決まるので(噂はいろいろあれど)公平な方だと思います。決して事業仕分け会議で委員の方がおっしゃったような「ドクターの生活保護」のような制度ではありません。

さてこの特別研究員の予算も削減される方向で議論されているようです。さらには任期付正職員として若手研究者を採用する制度(テニュアトラック制度)の予算も縮減するそうです。若手研究者育成関連の予算を切って、今後の科学技術政策をどういった方向に持って行くつもりなんでしょう?

応用的、すぐに実用につながるような研究内容であれば、仕分け会議の委員が言うように、企業から直接必要十分なだけ資金をいただくことも可能でしょう。しかし、そうではない基礎的な研究についてはある程度、政府が支援する必要があるかと思います。基礎研究に携わる若手研究者を支援することが、国民の生活向上にどう反映されるかは非常に見えづらいとは思います。しかし、基礎研究というのは種のようなもので、数十年後に幅広く応用され花開く可能性を秘めています。新薬の開発や高性能デバイスも、数十年前の基礎研究が基となっています。また、最近では企業がコストダウンのため、基礎研究を大学に委託することも多く、得られた成果や特許が企業の製品を通じ国民へ還元されています。そうした研究活動に大きく寄与し、下支えしている博士課程学生、ポストドクターへの予算を削ることは、日本の科学技術力全体を下げることになりかねません

Web上では危機意識を持った方々が動き始めています
Twitterハッシュタグ#f_o_s
http://twitter.com/#search?q=%23f_o_s

科学研究費補助金の一部の執行停止に対する反対署名
http://www.shomei.tv/project-1343.html

大隅典子先生のブログ
http://nosumi.exblog.jp/10452121/#10452121_1

仕分けまとめwiki
http://mercury.dbcls.jp/w/index.php?%BB%B2%B9%CD%BB%F1%CE%C1%A5%EA%A5%F3%A5%AF#bccc7185

じゃあ私たち学生でもできることは何でしょう?
sivadさんのブログならびに科学政策ニュースクリップにて研究者ができるロビイング活動についてまとめられております。
http://d.hatena.ne.jp/sivad/20090903/p1
http://d.hatena.ne.jp/scicom/20091115/p1

また文部科学省はパブリックコメントを募集しています
http://www.mext.go.jp/a_menu/kaikei/sassin/1286925.htm


パブリックコメントを投稿された方がブログにアップされておられます
http://d.hatena.ne.jp/roadman2005/

これを参考にさせてもらいつつ、私も本当に稚拙な文章ながらパブリックコメントを作成し、文科省に送信しました。民主党本部の意見コーナーにも送りました。

「メール送ったところでなにか変わるんかいな」とは思わないでもありません。でも黙っていては変わる可能性は0です。短くても、文章構成が微妙でもメールを送り意見を言った方が言わないよりは断然いいと思います。

2009年10月31日土曜日

鹿と学会と宝物

気がつけば10月も終わり。今月はハイパー忙しかった。なぜならば科研費申請書シーズンですから。なんで学生なのに助教とかのポスト付きじゃねーと申請できない科研費で忙しくなるかは察してください。(下請けってやつですね)博士論文かかなあかんD3に計16ページの空白を埋めないといけない科研費のしごとふるとか某研究室はブラックにもほどがありますね


しかも国際会議があったりしました。場所は奈良です。おもいっきり台風来てる日にかぶってました。会場に行くと、能楽堂で講演していてかなりびっくりしました。松が描かれた金屏風を背景に光電子分光の結果を解説とかかなりシュールです。そしてコーヒーブレイクのおやつが毎回ゴージャスという。

で、会場でひろったのか、風邪こじらせてまたしばらく寝込みました。9月に引き続き毎月寝込んでますな。

最近、忙しい中でもわりと遊びにく時間はキープするように心がけてます。気分転換しないとマジで病みます。今月は水都大阪のフィナーレと、正倉院展に行ってきました。


ラッキードラゴンが火を吹いているのが見れて満足です。
正倉院展は相変わらずスゴかったです。今年はやっぱり琵琶かなぁ。伎楽?の面とかユニークなものもありました。帰りに興福寺の阿修羅像も見てきました。

というわけで今月は奈良行きまくりでした。最近奈良のガイドもよく出てるし、店も増えてるっぽいし、奈良いい感じです。近所なんだからもっとちょくちょく行きたいなぁ

2009年9月29日火曜日

熊本行き

世の中は先週シルバーウィークとやらで賑やかだったようですが、私は高熱を出した上におなかを壊し、連休をベットで死んだように寝て過ごしました。しかも連休明けから熊本で学会でした。ここのところポスター発表で2時間たっているのがしんどいなぁという理由で口頭発表を選ぶことが多く、今回も口頭にしてたので、風邪ひいていよーがなんとかしていかなくては、ってことで急遽、一日遅れていくことにしました。飛行機を格安でとっていたので変更がきかないし、直前にとると高いので電車でGoです。向こうで「電車で大阪から来た」周りに言うと唖然とされましたが4時間半でつきました。しかもJR西日本のひかりレイルスターは超快適なのでゆうほど大変じゃないなぁと。まぁかなり暇ですが。通学で電車に乗りなれている身なので電車にのってぼんやりするのは結構すきです。特急リレーつばめにも乗れて満足なり。

病み上がりでふらふらしながら発表もお仕事も終わり、2日目にはがっつり名産馬刺しを食べてました。高級馬専門店「菅乃家」でランチ食べました。まじウマーー。馬刺しって高級店で食べるとこんなにもうまいんだなと。石焼セットにして焼いた肉も食べたんですが、焼いたのと刺身で味が違うのにも驚き。とりあえず熊本いったら菅乃家いっとくべきっす。

学会いったらがっつり観光する主義なのですが、今回は病み上がりなのでセーブして熊本城と水前寺公園だけ行きました。熊本城は結構見ごたえありました。なぞのキャラ加藤清正君と忍者とかもいて面白いです。


2009年9月12日土曜日

あひる@水都大阪

今、大阪中之島では水都大阪なるイベントを行っているらしい。
そのイベントがあることは、例の府知事と市長の顔が水面から出てくるポスターで知っていたが、中身がどんなものかは知らなかった。
が、一昨日、某巨大掲示板で水都大阪のイベントの一環で巨大なアヒルのオブジェが川に浮かんでいるのを知って、猛烈に見たくなった。巨大なアヒルが堂島川に浮かんでるとか銀河ヒッチハイクガイドなシュールさだ。シュールなもの好きとしては見なければ。

水都大阪の会場にはアヒル以外にもいろいろ前衛的オブジェがあった。結構会場が広いので一気に見るのは無理そうなので、一番気になったラッキードラゴンを見に行く。

私が見た時はおとなしくしてたが、これ巡航したり火を噴いたりするらしい。
http://www.yanobe.com/LD_info
すごい見たいなー。いけそうなのは10月12日かぁ、覚えとこ。
で、お目当てのアヒルちゃん。




でかいwww
やっぱでかいわ。なんか満足しました。
このあひるちゃんは大阪以外の都市でこれまでにも浮かべられてきて、国境の無意味さを訴えているそうです。以外に意味深なメッセージが含まれているのだなぁ。
http://www.namura.cc/ahiru/concept.html
なんにせよ、この光景は気に入ったので、近場だしあと何回か見に行こうかなぁと思ってたり。大阪に期間中来るなら話のネタに見てみることをお勧めします。

夏休み(貴船)

ちょい前の話になりますが、8月末に避暑も兼ねて貴船に母と行ってきた。
京阪が鞍馬・貴船1dayチケットというのも出しているので、それを利用。
母は体力がある方なので、鞍馬から山を越えて貴船に向かうルートにてガチで鞍馬・貴船周遊。
学部生のころにも貴船に流しそうめんを食べるべく、同じルートで行ったことがある。その時は観光地だし~とか舐めてて、サンダルで行ったら本気の登山道で涙目になった。鞍馬の山ルートはかなりきついっす。


この山を越えると、貴船。涼しい清流の上の川床はマジ天国。


アユの塩焼きウマー。
市内で食べるのと違ってはらわたのえぐみがなく、ほろにがいって感じで美味しいです。
いやー貴船いいですな。紅葉もいいらしいので、秋にも行ってみたいです

2009年8月18日火曜日

なんとも胡散臭い

月末は選挙らしく、ポスターがあちこちに貼られている。

今回の選挙ってどうなるんだろう。TVはひたすら「政権交代」とわめいているけれど、政権が交代したからってよくなるわけで無いだろうに。マスコミ関係者の、聞こえが良い4文字熟語を作って自己満足してるようすがとても気持ち悪い。

現政権が不満だ→ちがうのに変えてみようというのは、とても幼稚だと思う。ひとのやっていることの上げ足をとって批判するのはとても簡単だ。批判することと、良くすることは全然違う。大体が、民主党の目玉にしている「子ども手当」と「高速道路無料化」にどれぐらいの効果があるんだろうか。子供手当は少子化対策らしいが、はたして月2万いくらかもらえるから子供をつくるかって気分になるだろうか。個人的な意見を言わせてもらうと、全くそんな気にならないな。何で、若年層が子供もたないかていうと、雇用が安定しない&子育てに魅力を感じないからだと思うぞ。ベースとなる賃金がしっかりないと、手当もらったからって助けにならない。逆に仕事している女性の場合、子供できちゃうとほぼイコール現役引退になってしまうので、やっぱりそこでも躊躇するとおもう。研究職にしたって、いろんな公募で若手研究者=35歳までとかいう枠があるので、それ考えると…ねぇ。

だから、お金を配るというよりも、30~40歳代の人間が、家庭があっても無理なく働けるような体制であるとか(「社畜」のように働かなくていい、給料は抑えめになるけど6時間程度勤務というのも可とか)、再雇用機会を増やすとか、働き方をどうするかって方が大事だとおもうんだけどな。

高速道路はもっと効果のほどが謎である。CO2削減って言っておいて高速道無料は本当に訳が分からない。しかも阪神とか首都高は有料。通行料の少ない田舎道を無料にして、そこの補修であるとか狸しか通らん高速の建設を税金から持って行って、挙句の果てにCO2が増加した分、産業界や電力業界に押し付けてその分こっちの支出に回ってくるのが目に見えてる。生活道路としては国道があるんだから高速道路は受益者負担でいいだろう…。

このなんとも怪しい公約はしかも、どっかから突っ込みを受けるたびに細部がコロコロ変わる。マニフェストとやらもver.1.12ぐらいになってるんじゃなかろうか。マイクロソフトも目じゃないね。一体どんなセキュリティホールがあることやら末恐ろしい。

そして国旗切り貼りして党の旗つくちゃったってか。国旗・国歌を敬えとかは押し付けないが、常識的に考えてそりゃいかんだろ。知ったら大半の日本人が不快に思うんじゃなかろうか。
選挙のある月に自国の国旗を刻んじゃうような、常識も危機管理能力0の政党。こんなのが支援されるのが本当に不思議でしょうがない。これがこのまま行くと与党とか思うと、夏バテも進みやる気も失せるってもんです。

2009年8月7日金曜日

インストールVASP(ifort11.0+mkl10.2)

ちとわけあって、研究室で4年ほど稼働していたPCクラスターをばらしたものにOSとコンパイラつんでvasp動かそうというプロジェクトに今週は追われていた。学生が運用できる計算機(のちのちはMPIつかえるクラスターへ)を整備しようという計画+ちと早急に数台計算機がいるイベントがあったので。研究室として保有しているものは、現在主力のマルチコアで早いのあるけど、いろいろインストールしてみたり、ちょっといじったりができないから学生が運用できるのがあればいいなぁと思った次第。私はVASP使わないんだけどな。
OSはCentOS5を使用。CPUはいまどきPen4。VASPつかうのでFortranコンパイラがいるのだが、もちろんifort(非商用)をもらってくる。(11.1)
あと、blas.lapackを最適化されたので使いたいのでintel math kernel library (mkl)も非商用フリーをもらってくる
アドレスはこちら。メール送るだけでもらえます
ありがたい。
http://software.intel.com/en-us/articles/non-commercial-software-download/

pen4なのでifortは32ビット版をもらってきました。(ia32)
ifortとmklのインストールはinstall.shを実行するだけなんだが、あとめんどくさいのは、pathの設定。
ユーザーのhome/aaa/.bashrcに


. /opt/intel/Compiler/11.1/046/bin/ia32/ifortvars_ia32.sh
(これは. /opt/intel/Compiler/11.1/046/bin/ifortvars.sh ia32 とCPUの種類を引数で与えてもいいっぽい)
. /opt/intel/mkl/10.2.1.017/tools/environment/mklvars32.sh

LD_LIBRARY_PATH=/opt/intel/mkl/10.2.1.017/lib/32:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

を書き足しました。

vaspのインストールはMakefileのチューニングで盛大にこけました。ifortのバージョンが新しく変わったせいで、オプションを書き変えないといけなかったり。pen4仕様(MPI無)にするには、

FC=ifort

OFLAG=-O3 -xW -mtune=pentium4

BLAS= -L/opt/intel/mkl/10.2.1.017/lib/32 -lmkl_intel -lmkl_sequential -lmkl_core -lpthread -liomp5
LAPACK= -L/opt/intel/mkl/10.2.1.017/lib/32 -lmkl_intel -lmkl_sequential -lmkl_core -lpthread -liomp5

fft3dlib.o : fft3dlib.F
$(CPP)
$(FC) -FR -lowercase -O1 -xSSE4.1 -unroll0 -w95 -vec_report3 -c $*$(SUFFIX)

あたりを書き換えればいいみたいです。
(しかし、自分のデスクにあるCore2機はx86_64なせいかpen4とは同じようにはいかなかった)
さて、次は並列化してみるか。いやそれよりD論進めろよと。

2009年8月1日土曜日

人はさして合理的ではないらしい

最近読んだ本:
「世界は分けてもわからない」
「人は原子、世界は物理法則で動く-社会物理学で読み解く人間行動」

上のは生物、下のは物理よりの内容なんだが、なんだかわりに共通の話題を扱ってる部分もあり、並行して読んでたらおもしろかった。一言で言うとMany is different (P. W. Anderson)。集合体は部分の和以上のモノになる。しかしなんだ、下のはタイトルがトンデモ本ちっくではあるな。生協で買ってたら後輩に「なんかそれヤバい本ぽいタイトル」みたいなコメントをもらった。内容はまともだし面白いんだけどなー。めずらしく、物性物理よりの話題にからませて書いてあるから近しく感じた。物理よりの一般書といえば宇宙(ひも理論)関連な内容多いからなぁ。本文の最後の文がまたイイ引用句だし。よけいなお世話だけど原題のThe Social Atomをそのまま「ソーシャル・アトム」にしたほうが手に取りやすいような…

内容は、社会に現れる現象(人種差別や少子化や格差)なんかは、相転移とか物理で出てくる現象に近いということ。人の行動が総じて合理的ではないこと、それゆえ人の合理性を第一原理として作られた経済学ではうまくいかない例がいろいろ挙げてあって面白い。規制緩和による自由競争でつねに価格が下がるわけではないとか(カリフォルニアの電気料金とか)。規制緩和や民営化が万能薬のように言われているが、そう単純ではないみたいだな。

一番わかりやすいのは最初にでてくる「なぜ、アメリカでは白人が住んでいる区域と黒人が住んでいるエリアが分かれるか」という話題。普通に考えればそりゃ何らかの差別があるからでは?ってなるが、差別とかなんもなくても、ただ「自分が極端なマイノリティにはなりたくない」という条件を与えるだけでクラスターが出来上がる。磁性体とかと全く同じだ。シュミレーション結果の図もイジング模型のモンテカルロの結果と似てる気が。

「極端なマイノリティになりたくない→近しい人間のまねをしとこう」ってのは人類が古くから持っている性質みたいで、理性を軽く圧倒してしまうそうだ。”サクラ”が凄く有効に働くのもそんな理由だろう。さて、そんな性質があるならばいわゆる”民意”ってのは軽く操作されてしまうんではなかろうか。マスコミはいわば大規模なサクラみたいなもので、マスコミが大声で意見を垂れ流せば、世間の数割はそれに影響されるだろう。その割合がある程度大きければ”近しい人間のまねをしておく”相互作用によってその影響は伝搬され、なんとなく社会全体に広まり、マスコミ発の意見=”民意”になっちまう可能性がある。”民意”とかそれによって選ばれた政治家は一体何者ってことになる。ならば2大政党制はあぶないよなぁと思う。upとdownしかないスピン系で相転移がおこり強磁性体になるように、2つの選択肢しかなければ、どちらかの圧勝が起こりやすくなるんじゃなかろうか。そのパラメーターがマスコミの影響で変わるとかだったら実におそろしい。

2009年7月22日水曜日

液漏れ

エアコンのリモコンの電池をかえたら液漏れしていた。
謎の液体Xが手につくわ、まさか液漏れしてると思ってなかったのでベットの上で作業してたもんでシーツにもつくわでげんなり。実家で電池液漏れ勃発のときに「電池の液はヤバいから」ってことを言ってたので調べてみたら、水酸化カリウムって強アルカリ性の物体らしいので焦る。化学実験のときに強アルカリのやけどはこわいでー肉まで溶けるでーと脅されまくった学部時代の記憶がよみがえる。(そんなふうに脅されまくったから化学系に行かなかった。)
掃除用においてあったクエン酸の水溶液作ってそれで仕上げにゆすいどいた。中和されてますように。リモコンは接点が緑青吹いてたので捨てた。ダイキンはリモコンだけ買うのOKだったので。

ググったら電池の液漏れは頻発しているみたいで、それに伴うやけど事故も頻発してるみたいだ。KOHみたいな強アルカリな液体が、ちょっとリモコンとか玩具のなかに長時間入れてたからって即効漏れ出たり(自宅エアコンのは2-3年しか使ってないはず)、しかも「電池って液漏れするから皮膚に付いたら洗ってね」てな対応でいいのかと思う。説明書にかいてあるじゃんっていっても皮膚に付いたら洗え程度じゃ洗剤の説明とかわらんし。アルカリのやけどは塩酸とか硫酸かかるより怖いっていうし。液漏れする前提なら、もうちょっと安全な物質使えよ。身近なくせに危険な物質が漏れ出てくる可能性大てのはかなりどうかと思う。代替材料を研究しないのかな。大容量な電池より安全なのが欲しい。

アルカリ乾電池以外にも、携帯のバッテリーに使われてるリチウム電池も実はあまり安定性がよろしくない物質つかってるので、強打したり火にほりこむと爆裂する可能性があるらしい。電池怖い。

それを予知してかどうかしらんが、今日交換するために買ってきてた電池はマクセルの液漏れ0設計とうたってるやつだった。はやく液漏れ撲滅してくれ。マンガン電池は液漏れしてもわりかし安全な物質みたいだ。もうマンガン電池かマクセルのしか買わない。

2009年7月16日木曜日

誕生日

今日は誕生日で、しかし平日なので大学に行った。
大学にいったら、研究室の秘書さんたちに保湿クリームをプレゼントしてもらい、さらに学内にあるフレンチなレストランでお昼を奢ってもらった。ありがたやー。そしてサプライズで寄せ書きをもらった。
誕生日に寄せ書きをもらうというのはレア体験で驚いた。寄せ書きをもらうこと自体、ひたすら大学に残留してたので、送るばっかりであまりなかったからなぁ。後輩がいろいろ書いてて、ネタな文章書いてあったりで面白い。
というわけで、年をとるのも悪くないなと思った。

来週は日食があるらしい。日食グラスを買ってみた。家族が、自分もほしいというので調べたら売り切れててた。宇宙関係は人気ありすぎだ。

2009年7月12日日曜日

経済物理学て実のところどうよ

経済のことは本当によく分からない。
一番謎なのが、おそらく経済学が、市場経済は無限に成長すると思っているところだ。
ニュースでもなんでも、GDPなり、とある指標の伸び率が前の年とくらべて何パーセント上下したかで騒いでいる。しかし毎年数パーセントの成長が永遠に続くはずなかろうと思う。熱力学の第一法則的に考えて。
同様にして、日本の人口が永遠に増加するというモデルで年金なり社会インフラのあれこれを設定しているのが意味不明すぎる。モデルがまちがってるんだからそこにどんだけ高度な統計解析したところでだめだろ。

一番ダメなのがまともなモデルもなく「とりあえず最低賃金は1000円、消費税は上げません、年金ダイジョーブ(財源とかこまけぇことはいいんだよ)」とか言っちゃうどっかの政治家だが。

ぎりぎりわかるのが物理なので熱力学とのアナロジーを考えてみる。外部からなんの働きかけもない閉じた系では、いずれ動きのない熱的に死んだ状態になってしまう。これはどう考えても芳しくない。
が、外部とエネルギーなり粒子なりのやりとりがある開放平衡系での定常状態というのは対流に代表されるように内部での動きがある。外部とのやりとりを貿易、内部での動きを税金とかに置き換えて、非平衡系の力学を応用したロバストで成長しなくても定常な経済状態を目指せるモデルなんてできないんかねぇという妄想。

まぁこんどこそ物理学会で経済物理のセッションを覗いてこよう

2009年6月28日日曜日

R で描画しよう

MathematicaがUpdateしてから調子悪い。
描画するとラベルの字がつぶれるつぶれる。25万もするくせになにこれ、うぇーん。
EPSで出力するとフォントつぶれは回避できるんですが、MathematicaのEPSはクソ重くて、それだけで10Mとか論文に貼り付けるにはあまりに激しい容量です…。
そこで、3Dプロットを美しく書けるフリーソフトを探していたわけです。
要求することはただ一つ。離散的な3次元のデータをデータ間の補間を行いつつ3Dプロットすること。
まぁGnuplotでもそれなりのものはかけて、
set pm3d
でpm3dを読み込んでやれば、splotで
http://t16web.lanl.gov/Kawano/gnuplot/plotpm3d.html
ここにあるような3Dのカラーグラフはかけます。しかし、いかんせんGnuplotは3Dデータの補間がないようなのですよ。csplineは基本2次元plot用だし…。
そこで手をだしてみたのが"R"です。
"R"の存在は前々から知っていてその異様にシンプルな名前にびびって手を出せていなかった代物です。統計解析ツールというかそれ専用の言語+統合開発環境です。言語なのでガチでプログラミングぽいです(ToT)
さて、Rの強みの一つはグラフィックが美しいことです。そして統計解析専用に作られているんで、補間用のパッケージとかもごろごろ転がっています。といいことづくめなようなのですが、めっちゃ躓きました。
グラフィックを出力したいのに、デフォルトのグラフィック用の関数が、等間隔のグリッドにしか対応してねぇ…。
私の場合、計算のデータポイントは基本、変動が大きそーなとこは細かく、どーでもよさそうなところは粗く、対数的にとっているのでこれはかなり困りました。
4時間ほど苦闘した結果、
akima(Akima先生?とにかくありがてぇ)っていうライブラリ中にあるinterpという関数を使って補間をつかって等間隔グリッドを作成、データをリストに格納→描画
っていう流れでなんとかなりそうな予感です。
備忘録として、
CSVからデータを取り込み→それをリストに格納→interp→描画
のテストコードをあげておきます。


book1<-read.csv("book1.csv")
library(akima)
rlist<-as.list(NULL)
rlist$x <- c(book1[,1])
rlist$y <- c(book1[,2])
rlist$z <- c(book1[,3])
rlist.li<- interp(rlist$x,rlist$y,rlist$z,
xo=seq(min(rlist$x),max(rlist$x),length=50),
yo=seq(min(rlist$y),max(rlist$y),length=50))
image(rlist.li)
persp(rlist.li)



read.csv():CSVから読み込み
c():リストへの要素の追加や結合
persp():俯瞰図の描画
interp:補間。lengthでメッシュの数を決めることができます

CSVファイルとして

x y z
-5 -5 50
-4 -5 41
-3 -5 34
-2 -5 29
-1 -5 26
0 -5 25
1 -5 26
2 -5 29
3 -5 34
4 -5 41
5 -5 50
-5 -4 41
-4 -4 32
-3 -4 25
-2 -4 20
-1 -4 17
0 -4 16
1 -4 17
2 -4 20
3 -4 25
4 -4 32
5 -4 41
-5 -3 34
-4 -3 25
-3 -3 18
-2 -3 13
-1 -3 10
0 -3 9
1 -3 10
2 -3 13
3 -3 18
4 -3 25
5 -3 34
-5 -2 29
-4 -2 20
-3 -2 13
-2 -2 8
-1 -2 5
0 -2 4
1 -2 5
2 -2 8
3 -2 13
4 -2 20
5 -2 29
-5 -1 26
-4 -1 17
-3 -1 10
-2 -1 5
-1 -1 2
0 -1 1
1 -1 2
2 -1 5
3 -1 10
4 -1 17
5 -1 26
-5 0 25
-4 0 16
-3 0 9
-2 0 4
-1 0 1
0 0 0
1 0 1
2 0 4
3 0 9
4 0 16
5 0 25
-5 1 26
-4 1 17
-3 1 10
-2 1 5
-1 1 2
0 1 1
1 1 2
2 1 5
3 1 10
4 1 17
5 1 26
-5 2 29
-4 2 20
-3 2 13
-2 2 8
-1 2 5
0 2 4
1 2 5
2 2 8
3 2 13
4 2 20
5 2 29
-5 3 34
-4 3 25
-3 3 18
-2 3 13
-1 3 10
0 3 9
1 3 10
2 3 13
3 3 18
4 3 25
5 3 34
-5 4 41
-4 4 32
-3 4 25
-2 4 20
-1 4 17
0 4 16
1 4 17
2 4 20
3 4 25
4 4 32
5 4 41
-5 5 50
-4 5 41
-3 5 34
-2 5 29
-1 5 26
0 5 25
1 5 26
2 5 29
3 5 34
4 5 41
5 5 50

こんなのを用意しとくと


こんなかんじのができます。
これはx^2+y^2を描画してみたものです。

2009年6月27日土曜日

旧友とランチ@牡丹園

久しぶりに高校時代の友人に会った。なつかしい。メールのやり取りはちらほらあったのだが、会うのはずいぶん久しぶりである。
関東からほぼ日帰り、帰りは夜行バスらしい。母は強しだな~。

昼ごはんを一緒に食べようということで、EST内にある神戸別館牡丹園に行った。本店は名前の通り神戸にあって、昔は千里中央の阪急にも支店が入っていた。ここの焼きそばやひき肉を甘辛く炒めた物をレタスで包む料理が好物で、何度か頼んで祖父母に連れて行ってもらった記憶がある。牡蠣のお好み焼きはとくにハイパーおいしかった記憶がある。十数年ほど前?に千里中央店がなくなってしまい、それ以降神戸はさすがに遠くてなかなかいけなかったのだが、最近ESTに入ったときき、行く機会をうかがっていたのだ。梅田飲食店激戦区なだけあって、ランチメニューやらオンラインクーポンなどあってお得である。

いろいろ話を聞いていると、女の集団のなかに入るってのは大変そうだなぁと思った。女性がある程度多いとなぜか「女王蜂」が誕生してそれ以外が(男女を問わず)「働き蜂」的ポジションでへいこらして持ち上げるてな構図になりがちっぽいなぁ。それが集団を平和に維持するための最適なモデルなのかもしれんがな、個人的にはちょっとなぁ。ネットワーク理論でこういうのも解けるのかしら。

あと、母親に関する思い出で共通する部分があってものすごくウケた。あぁみんなやっぱりそんな体験があるんだなと。

2009年6月15日月曜日

Tex用エディタ

texのエディタでかなり高機能なものを見つけた。
ここ
http://www.juen.ac.jp/math/nakagawa/texguide.html
にある、EasyTex。数学の先生が作られただけあって、数式関係の機能が凄い。
数式の行数を聞いてくれて、左寄せするテンプレートまで作ってくれるとは。腐るほど数式かかなあかん理論系にはありがたや。

Winshellも高機能なんだけど、Vistaだとどうもうまくいかないみたいで、後輩が困ってた。こればVista対応とあるし、勧めてみよう。サクラエディタにマクロで十分便利なんだが、ギリシア記号の入力支援とかラベル参照のときの支援があると断然楽だと思う。

もうひとつ、EclipseのTex用プラグインがなかなか秀逸そうなので、そっちも試そうと思う(タブで開けないと気持ち悪い病にすっかり侵されている)

2009年6月7日日曜日

f77とf90の混在

さて、最近良くも悪くも忙しい。論文なぞ書いていて、ふと、「この数値計算ほんとに大丈夫なんだろうか」という不安が頭をよぎりだしたりして、D論を終わらせる前に計算の妥当性をちゃんと調べておこうという気になった。まーすでに何本かジャーナルに出てるんで妥当でないと困るんだが。

なんでそんなことが気になるかというと、NRGにおけるちょとしたテクがいまの系ではうまく働かないからだ。NRG(数値くりこみ群)は伝導電子バンドを対数的に離散化することで、問題を有限サイズ系の対角化にはめこんでいる。離散化の影響を最低限に抑えるために、いろんなメッシュとろうぜってのを試すとちょっとアレ?ってな感じだったりする。いまの自分のコードでは一般的な場合は影響がほとんどないんだが、伝導バンドとの混成にエネルギー依存をつけると、あやしい。一般的な場合に影響がでてないので、NRGの本体ではなくそこにほりこむパラメータ類の計算が怪しい。

パラメータの類はMathematicaで計算していた。Mathematicaは高性能かもしれんが、ブラックボックスなので不安である。なんでMathematicaかというと、計算に特殊関数のBessel関数とその数値積分がいるからだ。ニューメリカルレシピは単精度だったのでつかえねぇ…。というわけでMathematicaつかってたんだが、つい最近、高精度のBessel関数のフリーなライブラリを見つけた。
http://www.kurims.kyoto-u.ac.jp/~ooura/index-j.html
オオウラ先生ありがとぅぅぅ。Bessel関数だけじゃなく、高精度数値積分のパッケージまで作っておられる。まさにネ申。というかここのパッケージ使えば大半の物理計算ができてしまうと思われ。

恥ずかしながら、DE(二重指数関数型)公式という数値積分法は知らなかった。もう一個のIMT公式もだけど、日本人が発見した方法らしい。日本ってやっぱ数学つよいんだな。変数変換をもちいて区分求積することで猛烈に精度がよくなるらしい。なんでうちの専攻の授業ではガウス積分とかばっかでもっとつかえそうなこっち教えないんだ?

さて、ありがたくもらってきたんだが、ソースはf77で書かれている。私の普段使ってるのはf90。でも大丈夫。基本的にはおなじコンパイラ(g95,ifort)でコンパイルするので、-cオプションでオブジェクトファイルにしておいてリンクすれば.f90のファイルから呼び出すことができる。

ただし、問題が一つ。f90は結構型宣言について厳しい。私は、先頭にimplicit noneつけないと気持ち悪いんだが、これをするとfunctionを使うときにやっかい。たとえば、外部のファイルにfunction hogeがあるとして


program main

implicit none

integer :: i
double precision :: x,res
external :: hoge

res=hoge(x)

end program main

は、hogeが型宣言されてないとしてはじかれる。関数を double precision :: hoge みたいに型宣言してもあいてがf77なので仕様が違う→結構ヘンなことになりそうで怖い。

program main

implicit none

integer :: i
double precision :: x,res

interface
double precision function hoge(x)
double precision , intent (in) :: x
end function
end interface


res=hoge(x)

end program main

とinterface文でhogeの属性を指定してやるのがおそらくベスト。うぅ。いちいち使うたびにinterfaceかくのめんどくさいので、


subroutine ldbesj0(x,res)
implicit none

double precision :: x,res
interface
double precision function dbesj0(x)
double precision , intent (in) :: x
end function
end interface

res=dbesj0(x)

end subroutine ldbesj0

というのを各ベッセル関数について作った。こうすると、ライブラリにしたときに、ldbesj0とかを呼べばinterfaceについて考えなくてもよいしなぁ。というわけで、明日はライブラリ作ろうと思います。

2009年5月26日火曜日

多世界解釈

「宇宙を復号する」読み終わった。おもしろかったんだが、著者が多世界解釈持ち上げまくっているのが気になる。エヴァレットの多世界解釈はなんだか考えているとむずむずする概念なので。

量子力学の世界では、とある粒子がいくつかの状態をとりえる場合、それらが重ね合わさった状態をとっている。確率に応じて観測したときにどう見えるかが決まるだけであって観測されるまで粒子自体も自分がどんな状態か分かってない。(粒子がわかるてな言い方は変だけど)そんなわけで、例の半分生きてて半分死んでいるシュレディンガーの猫が出てくるわけなんだが、世の中そんな不気味なことは起こらない。私の場合、寝起きは半分死んでるけどな。なぜかというと、周囲の環境によって常にものは観測されているので(光があたるとか、熱とか)、自分たちが感知できるようなタイムスケールでは普通重ね合わせがおこらないからだ。さてその重ね合わせ→普段感知している古典世界へ、どうやって移行してるのかってのが結構な問題だったりする。なぜAでもありBでもある波動関数が、観測された瞬間AもしくはBのどちらかに決まるのか。ふつう授業とかでは、「波動関数が収縮するのです」と習う。収縮ってぱっと聞き都合がいいけどよく分からない。この「収縮するのです」理論はコペンハーゲン解釈というらしい。

これに真っ向対立するのがエヴァレットというひとが院生のときにぶちたてた多世界解釈。なんと観測された瞬間に、われわれの住んでる宇宙が状態Aをとる宇宙と状態Bをとる宇宙に分裂するらしい。観測って、真空のゆらぎやら光があたることまで考えると、毎秒何億ってレベルじゃない規模で宇宙が分裂していくわけだろ。宇宙すべての原子についてとりうる状態の個数っていくらなんだか。で自分が存在する宇宙はその無限の中の一個で…とか考えると自分がいま生存してなんかやってるってことがすごい危ういというか足元がぐらつく気分になるな。

なので個人的には多世界解釈は嫌いです。無限個の宇宙とかそういうのは物理的じゃないと思うなー。こういう観測問題とかわかりやすく書いた解説書ないかなぁ。

2009年5月17日日曜日

「宇宙を復号する」ってすごいタイトルだな

最近、量子情報に興味深々。もともとはD論やら論文のイントロに書く「今やってる研究が~~の役に立つよん」の~~のところに量子コンピュータを入れれるのかどうか調べるためにあれこれ巡回してたんだが、それ自体がおもしろいなぁと。量子論ベースのことやってながらいまさらすぎる。

なんでこれまで量子コンピュータやら量子暗号やら量子テレポーテーションの話を避けていた感があるかというと、一方的に「あれって光学のほうがメインっしょ」ってイメージがあったからだ。学会とかでも量子情報な話は大抵レーザーの偏光を使っていて偏光状態のポアンカレ球うんぬんいわれても固体物理な私にゃ??だったのだ。なんで光なのかっつうと特殊な結晶にレーザー光を当てるとうまいこと対になった光子ができて、それを量子ビット、キュビットとして使えるから便利らしい。
この対になるものが重なりあってる状態(エンタングルメント)を作れれば、それを量子情報に使える可能性があるわけで、光以外には、分子振動とか分子回転で計算しようって試みもあるらしい。光以外で有力とされてるのがスピンを使うってやつで、それは知ってたんだけど、「あーNMRとかイオントラップわかんね」とかこれもまたスルーしてた。なんか最近ダイヤモンド使うと室温でエンタングル状態が作れたとか固体のほうでも熱いっぽい。エンタングルメントの基が不純物核スピン+電子スピンの相互作用、うは、なんか理論でも面白そう。

情報理論は興味あるけどさっぱり知らないし、しょっぱなに専門書読むのもしんどいよなぁとおもって「宇宙を復号する」ってタイトルの本を買ってみた。なーんか量子力学も情報理論を通じて考えれば、観測問題も情報を移転する操作として見るとわかりやすいんだと。大きな物体ではなんで古典的なふるまいなのかってことについていろいろ書かれててちょっとわかった気になるな。フラーレンですら、波動性をもって2重スリット実験で干渉するらしいてのはびっくりした。ウイルスで実験しようとしている人もいるらしいけど波動性があったらトンネル効果で感染するのか?

ウイルスつながりで。新型インフルで大学は休講っぽい。まぁ研究室の活動には関係ないんですがね。

2009年5月4日月曜日

インフル対策

新型インフルは一体どうなるんだろう。連休明けのパンデミックとかがいやなのでとりあえずマスクと食料を備蓄。Amazonでクレべリンゲルも買った。二酸化塩素ってすごいな。インフルエンザウイルスまでノックアウトとは。しかもウイルス表面のタンパク質を修飾するって仕組みがなんかすげぇ。タンパク質を修飾しちゃうんなら長期使用するとなんか肌荒れしそうでこわいが。

Amazonで防護服まで売ってるのにはびっくりした。ゴーグルは化学実験のときに買わされたのがあるのでいざとなったらそれを転用だ。今回のは一度は収束すると思うけど、秋が怖い。スペイン風邪も春の第一波、秋の第二波とあったらしく、しかも後半のほうがやばかったらしい。南半球でまぜまぜされてパワーアップとかやめてくれよ…。夏中にマスクと殺菌用品を備蓄せんとなぁ。

秋は国際会議のシーズンなのでそのあたりも悩ましい。ことしはイタリア北部であるらしいんだが、10数時間飛行機乗って時差ボケでふらふらで、各国から大勢人が来るところに行くってパンデミック対策としては最悪だと思う。海外で病院いかなあかんとか絶対嫌だ…。なので国内のをがんばって探そうと思います。まぁそうしたほうが旅費をi7搭載したPCとでかいディスプレイ買うのにつかえそうだから個人的にはうれしいかも。ただ、今年を逃すと、来年の国際会議は北京ばっかり(なんとなく避けたい)だし、2010年以降数年間、猛烈な太陽風→電磁嵐が吹きつけて飛行機やばいかもねーシーズンの到来らしく、しばらく海外行く機会なさそうだ。

まぁそんなわけで、連休だけど家で仕事な日々。

2009年4月24日金曜日

Mathematicaメモ

Mathematica覚書

論文用の図をキレーに作るため、Mathematicaと格闘して一日終わる…
Mathematicaは7にアップグレードしてからなんか挙動が怪しい。グラフを書かせると、字化けするようになった。EPSなら大丈夫なんだがMathematicaのEPSとイラレが相性超悪なのでEPSで出されても…。なんでだ…。たぶんデフォルトのフォントがうちの機会と相性悪いんだろう。
そんなわけで、グラフのラベル等のオプションを覚書

たとえば、

Plot[Sin[x], {x, 0, 10},
LabelStyle ->
Directive[Orange, FontFamily -> "Courier", FontSize -> 20]]

こんなふうにすると、ラベルの文字がオレンジ色で、FontはCourierでサイズは20ptの図ができる。
基本的に、Labelの文字の設定はLabelStyleってのを使う。そのなかでFontのオプションはFontFamilyやらFontSizeやらいろいろあるんだが、組み合わせて使うには、Directiveってのを使う必要があるそうな。それにしてもMathematicaの解説サイトのわかりにくさはありえねー。

2009年4月11日土曜日

へたれが群論を勉強してみるテスト

群論を勉強せねばならなくなった。前々から嫌な予感はしてたんだがSU(2)だのそんな用語を駆使しないと結論部分がしまりのないかんじになってしまふ。まぁそんなわけでとりあえずSU(N)だの直積表現だのがわかるようになるのを目標としてぼちぼちと勉強することにする。

せっかくなので勉強したことはチラシの裏に書きとめておく。間違ってそーな予感プンプンするな。

とりあえず、群ってなんやねんてとこから。群というのはヒジョーに抽象的な概念であるらしく、とりあえずどんなものの集合でもいいからその任意の要素AとかBとかCに対して

1.積A・Bも集合の要素
2.(AB)C=A(BC)
3.単位元がある(作用しても相手を変化させない要素、1とか単位行列みたいな)
4.逆元が要素のなかにある(元に戻すような要素が定義できる)

という4つの条件を満たせばそれらは「群」ですよと言えるっぽい。オプショナルな性質が加わると、リー群とか巡回群とか可換群とかちょっとややこしい名前になってくる。要素は具体的なモノや数字じゃなくてもよくてたとえば、右方向に90度回転させるであるとか、x軸方向に30pt進めるとかのなんらかの操作でもいい。考えてみればカードをカットするというのも群、しかも巡回群を作るんじゃねーの。

群がそんな概念ですよと言われても、はぁさいでっかって感じなのだが、物理でありがたいのは対称性を群論で扱えるというところ。系の対称性はその系がどんな状態をとるかというのにダイレクトに効いてくる。量子力学だったら固有状態の縮重度が対称性で決まってくる。

対称性は、どの系がどんな対称操作(回転とか反転とか)に対して不変であるかで決まってくる。対称操作といっても、いちいち「z軸を中心とした90度回転」とかいうわけにはいかないので、基本的に行列で表わすことを考える。操作をうけるブツとして関数(ある条件でどんな値をもつかを具体的に記述したモノ、量子力学への応用なら波動関数と思っておけばいいぽい)を考えておく。こうした関数を基底という。ターゲットとする、群をなす対称操作の集合に対して閉じた(つまり、ある操作の結果として出てくる関数も集合の要素に含まれる)関数系を用いれば、対称操作の集合を行列をつかって表記できる。量子力学で出てくる完全系によるハミルトニアンの行列表記と似たよーな感じ?抽象的な対称操作を、「こんな関数に作用させるとこんな結果が出てくるよ~」として行列で見える化してるわけか。こうして得られた行列の集合を、群の表現という。関数系の選び方には任意性があるので、表現は何パターンもある可能性がある。そのなかでも適切な基底関数系を選んで、うまいことなってる状態(対角化され度合が一番高いってのが妥当なイメージか?)を既約表現という。

とりあえず、こんなところで。続くかも…?

2009年4月10日金曜日

プロキシ立てた

SquidでCentOS機にプロキシサーバーを立てた。
ここの設定にあるようにsquid.confをいじる。
http://centossrv.com/squid.shtml

chkconfig squid onが「コマンドが見当たんねーよ」てなエラーがでて使えないのは、/sbin/chkconfig とフルパス書くことで回避できた。そしてこれはrootになってないと使えないコマンドらしい。

さてプロキシ立てたは良いけど、使うとき、使わないときでいちいちツール→オプション→…はめんどくさい。Firefoxを使っているので、プロキシ経由用のプロファイルを作ることにした。
プロファイルを作るには
http://support.mozilla.com/ja/kb/%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E7%AE%A1%E7%90%86
にあるように、
ファイル名を指定して実行から
firefox.exe -ProfileManager
としてできるぽい。とりあえずproxyという名前でプロファイル作ってみる。
次にfirefox起動するとどのプロファイル使うか聞かれるので、proxyを選んで起動、ツール→オプション→詳細でプロキシの設定をする。
プロファイルが違うものを同時起動することもできて、その時は -no-remote -p proxyのようにオプションを付ける。バッチをつくるなら

"C:\Program Files\Mozilla Firefox\firefox.exe" -no-remote -p proxy

のようにしておくとよいぽい。

2009年4月9日木曜日

Xming+putty+ポートフォワーディング

Xmingの存在は前々から知ってたけど、なんかこないだ使おうとしたときにはうまくいかなかったのだな。Xmingってのはなにかってゆーと、CygwinのXサーバー部分をとってきたようなもんで、Windows上でLinuxのXwindowつかえるというなんだか便利な代物。CygwinもVMwareも中々重たい代物なのでXwindow使うためだけには立ち上げたくないよね~てな向きには最適ぽい。研究室の自分のデスクにLinux機+windows機の2台が置いてあるってな状態になったのであきらめずに試してみる。
通常の場合のXming+puttyの使い方はココに書いてある通り。
http://zodiac30.cse.kyutech.ac.jp/~fujiwara/setup/xming-putty/
XmingつかったXDMCPもできます。その場合はLinux側の設定をちょっといじる必要あり。
CentOS5の場合、/etc/gdm/custom.confをちょろっといじって

[xdmcp]
Enable=True

として、rebootすればOK。あとはWindows側でXLaunch起動、One Windowを選択、IP入れるとログイン画面が出るはず。

さて問題は、自宅から研究室のLinux機を使うとき。セキュリティ上、Linux機にはグローバルIPふってないし、LAN外からはアクセスできない。なわけでポートフォワーディングかませて、大学のSSH接続用の鯖→グローバルIP付きの研究室の鯖→自分とこのマシン、ていうややこしいトンネルを掘らなければいけない。Xmingでそれがつかえるのか??というのが今回の問題。
結論から言うと、Puttyのコマンドラインオプションで解決できた。
たとえば、目的のマシンの22番ポートに自分とこの5100番をポートフォワードしてるとき、
Xlaunchで設定するときに
start a programを選択 →Using PuTTYを選択
Connect to computer :localhost

次のページで

Additional parameters for PuTTY or SSHのところに
-P 5100

と入れておけばよい。
-Pはポート番号を指定するputtyのオプション。
puttyはそれ以外にもコマンドラインでオプションを与えて実行できるので、バッチも作れる。いつも使うのは-loadでセッションをロードするバッチを作っておいてもいいかも。
http://the.earth.li/~sgtatham/putty/0.57/htmldoc/Chapter3.html#S3.7

てなわけで、MultiWindowのは起動できた。mathematica使ってみたがおっそい…。まぁいろいろ経由してきてるんだからしゃぁないか。LAN外からのXDMCPはうまくいかず。これだけ遅いならVNCを試したほうがいいかもなぁ。

2009年4月5日日曜日

Mercurial始めました

書けども書けどもD論と投稿論文が埋まらないので、ぢつとディスプレイを見て、我泣きぬれてWinshellとたわむれる土日。せっかく書いた文章を研究室の端末とやり取りしててうっかり上書きしてしまったりすると数日ガチへこみしそうなのでウマいバックアップ管理の仕方を模索してた。そんなわけで以前いいよとの噂を聞いてたMercurial。MercurialはSubversionとかCVSとかに代表されるバージョン管理システムの一種らしいんだが、Subversionとかとちがって、どっかのサーバーに変更履歴(リポジトリというらしい?)を溜めるのではなく、各端末に履歴がたまっていく。サーバー立てるとかプロキシ云々のめんどくさい設定なしで、ローカルで動くバックアップツールみたいに気軽に使うこともできるぽい。Mercurial使うときは作業してるディレクトリの中に、.hgというフォルダができてそこに変更履歴がためられる。まぁなによりMercurialという名前がええよな。Mercuryから派生してるからコマンドもHgとか無駄に凝ってる。
参考文献
http://www.02.246.ne.jp/~torutk/mercurial/intro.html
http://www.lares.dti.ne.jp/~foozy/fujiguruma/scm/mercurial.html
http://www.lares.dti.ne.jp/~foozy/fujiguruma/scm/mercurial-tortoise.html#encoding

MercurialはWindowsでもLinuxでも使える。基本はコマンドラインで動かすんだけど、Windows用にはエクスプローラーのアドオンとして使えるTortoiseHGというのがある。カメさんかわゆい。一応両方入れておく。ついでに前々からエクスプローラーからコマンドプロンプトを呼べればいいのにと思っていてそれが実現できるソフトFolderPromptも見つけたので入れておく。いやーこれ便利だわ。なんでいままで探そうとしなかったんだろう。
で、あとMercurialで差分をとってそれを表示するときに、コマンドプロンプトだとあまりにわかりにくいし、TortoiseHGのデフォで入っているKdiffは日本語字化けしたので、Winmergeをインストール。これをMercurialで使うには、Mercurial.iniをちょっといじる必要があるぽい。
TortoiseHG用


[extdiff]
;cmd.vdiff = C:\Program Files\TortoiseHg\kdiff3
;cmd.vdiff = C:\Progra~1\TortoiseSVN\bin\TortoiseMerge.exe
;cmd.vimdiff = gvim.exe
;opts.vimdiff = -f '+next' '+execute "DirDiff ".argv(0)." ".argv(1)'
cmd.vdiff = C:\Program Files\WinMerge\WinMergeU.exe
opts.vdiff = /r /e /x /ub

Mercurial本体の場合

[extensions]
; The win32text extension is available and installed by default. It
; provides built-in Python hooks to perform line ending conversions.
; This is normally much faster than running an external program.
hgext.win32text =
hgext.extdiff =
[extdiff]
cmd.wmdiff = C:\Program Files\WinMerge\WinMergeU.exe
opts.wmdiff = /r /e /x /ub

はーMercurial関連いじってPCが全般的に使いやすくなった。

とりあえず、自分が作業してるフォルダでリポジトリ作るには

hg init

とする。(TortoiseHGだと右クリック→Create Repository Here)
そうすっと .hgというフォルダができる。
変更履歴をとりたいファイル、たとえばAAA.txtを

hg add AAA.txt

として追加する。
とりあえずは、最初の状態を保存したいのでこの時点で

hg commit -m "initial state(なんかコメントを書く)"

とするとこれが最初の”チェンジセット”(変更履歴のまとまり)として保存される。
そのあとファイルになんか変更すると、

hg status

とやると

M AAA.txt

みたいに、変更されたことがMで表示される。

hg diff (もしくはエクステンションで定義したwmdiff等のコマンド)

で、差分を表示。

hg log

で変更履歴を表示。ある程度変更したらまたcommitしてチェンジセットを作る。
まぁしばらくこんな感じで。のちのち端末間のをうまいことまとめたりする方法をしらべていこうかなぁ。

追記1
WinMergeのxdocdiffてゆープラグインを入れると、なんとOffice系統のファイルの差分も見れるようになる。いやぁ便利便利。注意すべきはWinMergeの設定でプラグインの検出を自動にしておくこと。

あとMercurialをRedmineと連動させてみたら予想以上に便利そう。RedMine1.6.3使ってるけど、プロジェクトの設定のとこから、リポジトリのタブでSCMをMercurialで選択,ルートディレクトリを.hgがあるディレクトリへのパス(/home/aaa/workspace/test/とか)って入れるだけでおけ。差分見れたりできます。他にも色々使い方ありそうなんで、解説本に興味が…

追記2
CentOS5へのインストールでは、yum install mercurial てな呪文が使えない…。かわりに、easy_install mercurial でpythonのお力を借りるのが妥当っぽい

2009年4月3日金曜日

気疲れ

新年度だ。研究室にも新人が来た。
ハイパー人見知りなもので新人の相手は猛烈に気疲れする、いやまぁほっとんど絡んでないのだけどそれでも疲れるってどんだけー。相手のキャラも不明だし、傾向と対策は謎いので話すときに必要な演算がその分多いんだよ。この先数年顔つき合わさなあかんかもしれん相手やし地雷は踏めん。むしろ全然違う研究室で初対面とかのほうがまだ話しやすいな、その場だけ猫かぶって乗り切れるもんな。とか思っておそらく露骨なほど避けまくっている。向こうから見たら話しにくい先輩ってな感じなんだろな、やれやれ。

珍しく同性の後輩が研究室に入ってきた。男の人からみたら、女性同士のほうが話しやすいんでないのとか思うかも知れんが、女同士のほうがいろいろ難しいんだよな、と女子高出身者としては思うのだ。つーか長年工学部にいるもんで、同年代の女の人と話すネタをわすれました、何話していいかわからん。絶対「痛いニュース」とか/.しらんだろうしな…。最近自分の話すネタがオタっぽいものしかない気がする。

女の人のほうが細かいことに気づきやすい分、些細な発言を気にしたりする気がする。下手な発言かませて凹まれたり恨まれたりしても嫌だしなぁ。女の後輩とかどう扱ったらいいかわからんや。いかん、思考が後ろ向きだ。

そんなわけで黙々とD論書き進めている、しばらく研究室では引き籠ってひたすらひっそり作業してるとおもう。はー、人見知りなんとかせんとなぁ。

2009年3月30日月曜日

池袋出張

物理学会に行ってきました。
場所は立教大学。池袋です。すんげーレトロで美しい建物の大学でよかったです。そして立地良すぎ。池袋、個人的には気に入ったかも。でかいデパート、ジュンク堂、ハンズとかでなんでもそろうし全く不便ない。Echikaの甘物などウマーなものもあるしなぁ。ビール半額につられて行ったのに、夢の庭なる居酒屋が料理おいしかった。から揚げが予想外にうまくてびっくりした。その前に東京在住の友人が連れて行ってくれた「音音」なるところもご飯おいしかったので、池袋の印象はイイ。

今回は、はりこんでいつもより高い目のホテルに泊まった。なんか元々不眠気味で、物音が気になると眠れない。ちょっと安い目だと廊下の音声が猛烈に聞こえたり、隣の鼾が聞こえたりで安眠できない。これまでは出張で足でるとかあほらしいてやってられへんとギリッギリのところに泊ってた、そしてそのたびに疲労困憊。健康は金に代え難いと最近思うようになってきたので快適さ重視で選んだ。ストリックス東京というとこにした。コンフォートシングルにしたら広くて快適だった。ベット寝心地いいし、クーラーから変な音するのとか言ったらちゃんとチェックしてくれたし加湿器貸してくれるし、朝ごはんバイキングじゃなしに各人に出してくれるし、ネットの調子がちと悪かった以外文句なし。快適に過ごしたんでかなりまじめに学会出た。快適さはモチベーションに影響するな。

学会も今回は自分の研究にかなりリンクするのが多くて業界の流行とか探れてよかった。レビューセッションで近藤効果の話もあったので聞きに行く。教科書とかだと書いてない、歴史というか流れみたいなものをちょっと窺い知れてよかったかも。大抵の教科書はS-d模型とAnderson模型の話を全く別物のようにぶったぎって書いていて、初見だとものすごく混乱する。S-d模型のほうは、スピンありきの領域だけが有効であるとしている。その結果、Anderson模型の部分空間での有効ハミルトニアンとなっている。そのせいで、摂動展開では局在スピン領域と近藤芳田一重項領域がつながらない。Anderson模型の数値繰り込み群の論文に書いてある謎の図の見方が初めてわかったわ。模型をシンプルにしたせいでシンプルな手法では解けなくなったとかその辺が教訓的であると思う。

2009年3月20日金曜日

sakuraエディタでTeX

こないだ、後輩にTeXの使い方を教える機会があって、フリーでいかにTeX環境を構築するかちゅうのをいろいろ考えた。

TeX+GS+GSViewとか本体
http://www.ms.u-tokyo.ac.jp/~abenori/mycreate/index.html
からインストーラーを頂いて、楽にインストールさせてもらう。

エディタ
sakuraでキーワード補完、色分け
マクロでplatex実行→dviout表示

がフリーでは一番楽なんじゃないかと思った。Winshellはなんか個人的に使いにくい…
そんなわけでplatex実行用のマクロを探す。
http://doter.seesaa.net/article/38297286.htmlからもらってきたものの、自分とこの環境ではMyDocumentとかにおいてあるTexファイルをコンパイルしようとするとエラーが出る。原因は、Document and Settingの空白っぽい。これだからWindowsでTexは…。というわけで、C直下に標準でインストールされるtexフォルダに一時的にコピーして、コンパイルするように変更する。
こんな感じ。あらかじめC:\tex\tempを作っとかないとエラーでる。終わった後にコピーしたtemp内のは消す仕様。JavaScript


var objShell = new ActiveXObject("WScript.Shell");
var myObject = new ActiveXObject("Scripting.FileSystemObject");
var i;
var pathlength;
var FileName; //原型ファイル名格納用
var TeXFileName; //TeXファイル名格納用
var DviFileName; //DVIファイル名格納用
var PathName ; //path名格納
var FileName2; //コピー先の名前を格納
Editor.FileSave(); //ファイル上書き保存
FileName=Editor.GetFileName(); //ファイルパスの取得

TeXFileName=""; //初期化
DviFileName=""; //初期化
PathName="";
FileName2="";


for(i=0;i<FileName.length;i++){
if(FileName.charAt(i)=="\\"){ //ファイルパスの「\」を「/」に変換
TeXFileName=TeXFileName+"/";
}else{
TeXFileName=TeXFileName+FileName.charAt(i);
}
if(i<FileName.length-3){ //拡張子をdviに変換
DviFileName=DviFileName+TeXFileName.charAt(i);
}else{
if(i==FileName.length-3)DviFileName=DviFileName+"d";
if(i==FileName.length-2)DviFileName=DviFileName+"v";
if(i==FileName.length-1)DviFileName=DviFileName+"i";
}
}

for(i=0;i<FileName.length;i++){
if (FileName.charAt(i)=="\\"){
pathlength=i+1;
}
}

for (i=0; i<pathlength;i++){
PathName=PathName+TeXFileName.charAt(i);
}

for (i=0;i<FileName.length-pathlength;i++){
FileName2=FileName2+TeXFileName.charAt(i+pathlength);

}
//objShell.Popup('FileNameは"' + FileName2 + '"です', 0, "ファイル名", 0); //debug用
myObject.CopyFile(TeXFileName, "C:/tex/temp/"+FileName2); //tempフォルダをあらかじめ作っておくこと
objShell.Run("C:/tex/bin/platex "+"C:/tex/temp/"+FileName2,1,1); //TeXコンパイラ実行(各自でパス変更)
objShell.Run("C:/tex/dviout/dviout.exe -1 "+DviFileName,1,0); //DVIビューアの実行(各自でパス変更)
myObject.DeleteFile("C:/tex/temp/"+FileName2);

2009年3月13日金曜日

CUDA+Fortran

昨日から今日にかけてホワイトデーのお返しで菓子をあちこちからいっぱいもらったのでなんか嬉しい。もともと甘いもんスキーなので。先生方からもお返しもらってしまった。若干恐縮するなぁ。
研究室の工事があって、夕方から猛烈に接着剤のにおいがしだして、頭痛+アレルギー症状が劇化したので早々に帰ってきた。昔から溶剤なにおいとか防虫剤なにおいとか芳香剤なにおいが嫌いというか嗅ぐと気分悪くなったり頭痛くなる。なわけで今日はあんまり仕事してない。まぁ実は数値計算の新バージョンの計算コードの動作チェック(発狂しそうにめんどくさかった)も完了してあとはひたすら計算機のパワーに任せるだけの段階になったので気分的にのんびりしてたりする。

そんなわけで昨日に引き続きCUDAで遊ぶ。
計算物理のぎょーかいでは速度命だったり昔々の偉人がつくったコードを使いまわしたり、線形代数の神ライブラリLapackを使うことが多いのでいまだにFortranが幅を利かせている。他の分野ではFortranなにそれオイシイの?だろうけどなぁ…。自分もメインはFortran90でありこれまで作ってきたのも大半がそれベース。なのでその一部をCUDAで高速化しようと思うと、FortranからCUDAコードを呼び出す方法をお勉強しとかなあかん。
FortranとCはわりかし互換性がよくて、もともと相互にFortran中でCの関数を呼ぶとかC中でFortranのサブルーチンを呼び出すとかができる。CUDAはCがベースなので、Fortranから呼び出すことも実は比較的容易っぽい。

CUDAに限らず、FortranとCを混在させるときの注意点
・FortranからCの関数を呼ぶときには、呼び出される側のCの関数にexternを付けておく、最後に_を付けておく。
・Fortranはそもそもサブルーチン等の引数が参照渡しなのでC側では引数をポインタとして扱わないといけない。
・Fortranは配列が1から始まる、Cでは0から始まる。Fortranでは列優先なので(a,b)の次は(a+1,b)、Cでは行優先なので(a,b)の次は(a,b+1)。

とりあえず昨日の配列の和のコードをベースに作る
Fortranで配列を準備→CUDA側に引数で渡す、GPUで計算→Fortranサイドで出力チェックてなことをやってみようと。環境はLinux(CentOS5)+ifort

CUDA側(testf.cu)



#include <stdio.h>
#include <stdlib.h>
#include <cuda.h>
#include <cuda_runtime.h>


__global__ void wa ( int *array1, int *array2, int len)
{
int i;
for (i=0; i<len ;i++)
array1[i]= array1[i]+array2[i];
return;
}

extern "C" void cudafunc_ (int* arrayH1, int* arrayH2, int* Np)
{
int i;
int N;
int* arrayD1;
int* arrayD2;

size_t array_size;

N=*Np;

printf("inside the C code \n");
printf("input array \n");

printf("input of H1 \n");
for (i=0;i<N;i++)
printf("%d\n",arrayH1[i]);

printf("input of H2\n");
for (i=0;i<N;i++)
printf("%d\n",arrayH2[i]);


array_size = sizeof(int) * N;

cudaMalloc( (void **) &arrayD1, array_size);
cudaMalloc((void **) &arrayD2, array_size);

cudaMemcpy(arrayD1,arrayH1,array_size,cudaMemcpyHostToDevice);
cudaMemcpy(arrayD2,arrayH2,array_size,cudaMemcpyHostToDevice);

wa <<<dim3(1,1),dim3(1,1,1)>>>(arrayD1,arrayD2,N);

cudaMemcpy(arrayH1,arrayD1,array_size,cudaMemcpyDeviceToHost);

printf("output\n");
for (i=0;i<N;i++)
printf("%d\n",arrayH1[i]);


return ;

}




Fortran側(testcuda.f90)



program main
!test for CUDA+Fortran

!the length of array
integer,parameter :: N=8
integer :: arrayH1(1:N)
integer :: arrayH2(1:N)
integer :: i


!setting the input array
do i=1,N
arrayH1(i)=i
arrayH2(i)=i*2
end do

call cudafunc(arrayH1,arrayH2,N)

print*,"output in fortran code"

do i=1,N
print*,arrayH1(i)
end do

end program main


Makefileの例

all: CUDAfortran

# Define Fortran compiler
FC= ifort

CUDAfortran: testcuda.f90 testf.o
$(FC) -o CUDAfortran testcuda.f90 testf.o -L/usr/local/cuda/lib -lcudart

testf.o: testf.cu
nvcc -c testf.cu

clean:
rm testf.o CUDAfortran


うむ、なんとか動いた。これであれやこれやをGPUで計算できるわけだがなんと10秒ルールとやらがあるらしい。GPU上のジョブの時間制限10秒ってマジっすか?10秒で計算終わってもデータ転送に時間かかってるっぽいしなんだか用途の制限多いんじゃ…?まぁ面白そうではあるので引き続きいろいろ調べると思う。

2009年3月12日木曜日

CUDAその3

研究室にNIVIDA Tesla C1060が入ったやつが導入されたのでぼちぼちCUDAをいじってみる。

TeslaはGPUのくせに、ビデオ出力の機能がない。ひたすら数値演算に特化している。とりあえず、C1060だとマルチプロセッサが240あってしかも各プロセッサに8つのコアが含まれているらしい。超並列処理とかいっちゃってるわけだ。
GPGPUのウリはこの並列化らしい。各プロセッサの8つのコアはSIMT(single instruction multi thread)という形式で同じ内容の手続きを複数のスレッドに分けて実行する(SIMDと似ているがこっちのほうがややこしい処理を並列化できるんか)。スレッドは8*4=32が基本単位になっていて、32スレッドを1ワープと数えるらしい。変なの。

母体となるコードはCPU上で実行される。コードのなかでも並列化が肝になってくるところをGPU上で行うのが普通。GPU側で処理される手続きをカーネルと呼ぶ。
ふつーカーネルで行われる手続きは並列化される。並列化の基本単位はスレッドなんだが、CUDAではスレッドの塊とさらにその塊の集まったモノを定義する。スレッドの塊はスレッドブロック、スレッドブロックの集まりをグリッドという。ひとつのカーネルに対して、ひとつのグリッドが割り当てられる。スレッドブロックのインデックスは2次元まで、スレッドそのもののインデックスは3次元までとることができる。こんなに入れ子な仕組みにするのはたぶんGPUのハード側の特性(マルチプロセッサが並列+そのなかのコアが並列)になってるからだろう。それがメモリの階層性にも反映されている。メモリはグローバルメモリとシェアードメモリの2つに大別される。グローバルメモリはグリッド内すべてで共有であり、シェアードメモリはブロック内のみで共有される。シェアードメモリのほうが圧倒的にアクセスが早い。

CUDAのプログラムの大まかな流れは

CPUサイドでデータ処理

GPU上でメモリ確保(cudaMalloc)

GPUへデータ転送 (cudaMemorycpy)

GPUで計算(aaa<<>>(x,y,z))

GPUからデータ転送(cudaMemorycpy)

こんな感じ。めっちゃ簡単な一次元の配列を足し算するだけのをつくってみた。バージョンはCUDA v2.0。2.0になってちょこちょこ変更があったらしく、Web上の旧バージョンのサンプルとはヘッダファイルの名前が変わってたりというトラップあり。要注意。


#include <stdio.h>
#include <stdlib.h>
#include <cuda.h>
#include <cuda_runtime.h>

#define N (32)

__global__ void wa ( int *array1, int *array2, int len)
{
int i;
for (i=0; i<len ;i++)
array1[i]= array1[i]+array2[i];
return;
}

int main (int argc,char *argv[])
{
int i;
int arrayH1[N];
int arrayH2[N];
int arrayoutput[N];

int* arrayD1;
int* arrayD2;

size_t array_size;
printf("input array \n");
for (i=0; i<N;i++) arrayH1[i]=i;
for (i=0; i<N;i++) arrayH2[i]=i*2;

printf("input of H1 \n");
for (i=0;i<N;i++)

printf("%d\n",arrayH1[i]);

printf("input of H2\n");
for (i=0;i<N;i++)

printf("%d\n",arrayH2[i]);


array_size = sizeof(int) * N;

cudaMalloc( (void **) &arrayD1, array_size);
cudaMalloc((void **) &arrayD2, array_size);

cudaMemcpy(arrayD1,arrayH1,array_size,cudaMemcpyHostToDevice);
cudaMemcpy(arrayD2,arrayH2,array_size,cudaMemcpyHostToDevice);
wa <<<dim3(1,1),dim3(1,1,1)>>>(arrayD1,arrayD2,N);

cudaMemcpy(arrayoutput,arrayD1,array_size,cudaMemcpyDeviceToHost);

printf("output\n");
for (i=0;i<N;i++)

printf("%d\n",arrayoutput[i]);


return 0;

}



なんか(void**)が??だったけど、CUDAではこういう型もあるっぽい。void*はvoid型ポインタだからその拡張か?C言語自体あんまりしらんのでなかなか目新しいのが満載だ。今回つかったのは単純のためまったく並列化もなんもせんと1ブロック1スレッド。さて次は並列化を学習しよう。

面談

気がつけば3月も中旬になりつつある。早い。
ここんとこなんだか忙しかった。毎回忙しいって言ってるな。ワークショップの手伝いがあったり、面談うけたり、論文の再投稿したり、OPローズダスト読み出したりしてたからだ。OPローズダストは亡国のイージスと同じ著者。文庫本で上中下なのでなかなか時間かかっている。ここんとこ夜更かししてしまう原因。

今週は月曜に、他の学科の先生に研究内容を説明して評価をうけるっていうなかなか重い仕事があったので、一週間が長く感じる。なんでそんなお仕事があったかというとGCOE関連。うちの研究室がかんでいるGCOEでは学生を研究者に養成するのに力点が置かれているらしく、プロジェクトは学生主体でチームリーダーも学生。一応数少ない日本人Dの一人なので必然的にチームリーダーとやらになってた。まぁとりたてなにもしていないんだけど(予算はおいしく使わせてもらいました)。養成事業の一環?として、外部評価を受けるというのがあるんだなー。ワークショップに駆り出されたついでに、そこに参加している研究室の教授の方にお願いして、面談してもらった。前々から知っている先生とはいえやっぱその道のプロに説明して評価されるっちゅうのは緊張する。どこがいい点なのか、今度どういう方向にすればいいかとかいろいろコメントもらえたのでよかった。なかなか学生にしてみればしんどいタスクだけどこの試みっていいんじゃないのかなぁと。自分の研究てのは意外なほど自分ではウリが分からない。外部の先生に見てもらって、どこが興味深いと思ってもらえるのかとか、業界のトレンドにどう絡めていけばいいのかとかをコメントしてもらえるのはすごくいいことだと思う。他の研究室の先生に「研究内容を聞いてください!」なんて、こんな大義名分がなきゃ言いづらいしな。研究はそりゃ自分がやってて楽しいのが何よりだけど、ひとから興味持ってもらってナンボなとこある。他人が興味持ってくれる切り口がどこかを知るのは強みになるだろう。来年度は学振あるのでリーダーはできない、補佐にまわることになる。さて誰を後釜にするんだ、勧誘せんと。

まぁそんなわけで今後の方向なんぞも模索しつつある今日この頃。GPGPUも導入されたことだしいろいろやること多いわ。

2009年3月1日日曜日

道具

気がつけば三月。2月はかなり忙しかったので、なんか本当にあっというまだった。

私のどーでもいい持論の一つは、「人のやる気は道具の性能に大きく左右される」ってやつだ。PCとかソフトウェアの起動が遅いとその時点でなんかやる気失せるし、入力補完ないエディタとか打つのめんどくさくなってくる。とまぁやる気のないのを環境のせいにしてみてるわけだが。
研究はともかく、日常生活でどうもやる気が起きないことの一つが掃除だったりする。さすがに最低限掃除機かけたりはしているので、汚宅とかゴミ屋敷レベルには達してはいないが、なんとはなしに埃が多い。掃除機をエルゴラピードにしてコードレスにしてから前より頻繁に掃除機つかってる割には埃レヴェルが低下しない。絨毯が敷いてあるのが主な原因と思われる。これが掃除機の限界というものかとか勝手に納得して、埃じゃ死なんと達観してた。
が、こないだ、電球が切れたのでコーナンに行ったら、粘着テープをコロコロころがすタイプのブツが目に入ったので、買って試してみた。埃めっちゃとれるやんか…。もしかして、みんな掃除機とこれの合わせ技をつかってたのか?というかそれが常識だったのか…?家事全般の方法がよくわからん上に常識がないのでコロコロが進化しているとは知らなかった。フローリング、畳、タイル、カーペット全部これ一個でOKタイプ、しかも持ち手が伸びるタイプまである。ニトムズとかいうメーカーのは、切れ目やら粘着剤が溝上についているとか、ワンタッチでケースが開くとかなかなか工学的にイイ感じ満載だ。うーん持ってコロコロしてるだけでなんとかなるなら、掃除してやろうではないかという気にもなるってもんだ。やっぱりやる気を改善するにはいい道具を見つけることだな。
で、休みの日に仕事に飽きた合間に最近ちょくちょくコロコロしてたら、なんか家にいる時の花粉症の症状がすごくマシである。花粉症対策の一歩はまず掃除からってな文章を見るたびに掃除苦手なもんで、「けっ、原因はヒスタミンの分泌っしょ」とか思ってたけど、本当だったんだな。3月中はマメにコロコロ転がすことにしよう。

2009年2月24日火曜日

一安心

これまでで最もしんどかった発表が終わった。
英語で口頭、持ち時間トータル50分。学内とはいえインバイテッドの外国人研究者が聴衆に数名。これってぺーぺーの学生にはなかなかきついシチュだとおもう。まぁ英語口頭プレゼン初体験としては、いきなり国際会議とかに比べるとハードルがだいぶひくい機会をもらえてありがたい。いつも大抵ぶっつけなんだけど、さすがに今回はがっちり原稿つくった。
30分ぐらい発表して10分ぐらい質疑応答?キンチョーのあまり時間の感覚があんまりなかったり。外国の人が質問タイムに手をあげて涙目。ものすごい気合いでなんとか聞き取ってなんとか返答。はぁーやれやれ、今年入って最も集中した瞬間だったわ。すんごい疲れました。バンケットで学内の比較的ウマーなレストラン(リーガロイヤルが経営?)でそこの名物と伝え聞く、えびふりゃーだのケーキだのをがっつりいけたのでちょっと癒されました。私が個人的に萌えを感じてひたすら実装に勤しんでいる計算手法NRGの説明に興味もってくれた人もいてうれしい限り。

なにがしんどいって開始が9時だったのが一番しんどかったなぁ…。うーむ一般企業につとめるのは無理ですな。

しかしつくづく私は人の話を聞くのがにがてだなぁと。会話とかなら聞く側に回るの好きなんだけど、学習に関しては、聞いて学ぶというのが苦手だ。学習のパターンとして、「見て学ぶ」、「読み書きして学ぶ」、「聞いて学ぶ」、「動いて学ぶ」の4パターンほどがあるらしく、脳のタイプによって違うとかなんとか。私は完璧に読み書き派で自分でちまちま参考文献読んでノート作るのが好きだし一番頭に入る。わからんくてもとりあえず写経のように書きまくるとそのうちわかってくるてなことも多。なので学会とか授業とか座ってひたすら人の話聞くのはあんまり頭にはいらないし苦痛なんだよな…。なんとかならんもんかな。

2009年2月18日水曜日

粉の季節

年度末が迫ってきている。
大学の年度末は3月なんだが、予算を使うにあたっていろいろ手続きせにゃぁならんので2月中に使い切ろうっていう風潮があるので年度末感が強い。そのせいでこの時期、学会だのワークショップだのが連発で、なんか自分の事を腰据えてできないのがつらい。まぁ業績になるし、たまにいいこともあるんだけどな。

花粉の時期らしい。先週は喉のイガイガとか目のしょぼしょぼ感がすごかったんだが、週明けからなんだかちょっと楽になった。抗ヒスタミン剤が効いてきたんかなぁ。周りは逆にこの2-3日でひどくなったって言っているけれど。花粉症とはもう長らく戦っていて、毎年乳酸菌だのトマトの力だのなんとか茶を試しているがあんまり劇的な効果があるものはないな。花粉症でひどいときには熱が出たり、口が腫れたりしたことがあるので対策は結構本気だ。花粉症もアレルギーの一種なのでアナフィラキシ―にならんとも限らんしなぁ。ちなみに今年はつくし飴とやらを実験している。つくしが花粉症に効くらしい。つくし=スギナ?なんか薬効はあるっぽいが…。意外にフリスクが喉のイガイガとか鼻のムズムズに効く。のどあめと違って糖分入ってないから歯に影響も少なそう。とりあえず花粉症には医者の薬とフリスクが最強なんじゃないかと思っている。

2009年2月11日水曜日

前衛

そういえばこないだの日曜は久し振りに出かけた。後輩が大阪に帰ってきていたので、遊びに行くことに。遊びに行くといっても自分が超インドアなもので勝手がよくわからん。さてどうしよう、とりあえず中之島エリアに行くことにする。
中之島線に初めて乗った。地下鉄といいながら、表示がすべて「京阪」なので戸惑う。初乗り運賃も市営地下鉄と違うし。新型車両は一人掛けがあった。それにしても空いてる。大丈夫なんかな。

中之島は国際国立美術館やら科学館やらインドア派人間にやさしそうな施設が多い。なんだか、大学がキャンパスなんちゃらメンバーになったとかで国立の美術館・博物館に格安で入れるらしいし。ノリで国立国際美術館に行くとアヴァンギャルド・チャイナなる展覧会をやってた。アヴァンギャルド自体は死語だそーです。
もともと美術芸術の類を解さない上に前衛となるとさっぱり??本を洗濯機にほりこんでくたくたにした塊で作品とかいっちゃったりするんだもんなぁ。嫌いじゃないけど。わけわからんなりに面白い。芸術家って変態と紙一重なんかしら(スンマセン)なキワドイのもあってびびる。
腐っても工学部としては蚊の精巧な模型みたいなん(腹部が膨らんだりへこんだりする)と超リアルじーちゃんon全自動車椅子がインパクト大だったな。ランダムネスの応用とかオートマトンみたいな手続きで図形描くみたいな結構理系ライクなのもあった。それならバンド図も芸術とかいえるんじゃないかと思う。

そういや中之島バーガーがこの近所なことを発見した。松坂牛100パーセントのハンバーガーか。気になる。

2009年2月7日土曜日

迷惑メール

PCのメールにはよく迷惑メールと思しきものが来るが、これまで携帯メールにはあんまり来なかった。ここんとこしょっちゅうくる。大半が「パチンコ・スロットの打ち子バイト勧誘」いやーそれしょっちゅう詐欺特集でとりあげられてる「打ち子詐欺」ってやつやないっすか。

速効消して拒否リストに登録してるけどそれでも来る。うぜ~。メールアドレスが流出したんかと疑ったが、ToでなくBccに入っている模様&Toのアドレスが自分とよく似てちょっと違うってパターンなんでランダム生成して自動で送りつけているんだろう。はぁ~。サルがキーボードをウン万年叩いたらシェークスピアの全作品が出力されるっちゅう話があるけどランダム生成でも結構存在するメールアドレスにヒットするもんなんだな、ランダムすげー。まぁ携帯のは単純なアドレスだしなぁ、そろそろ変え時か。

研究室のほかの人のところにも、「サイトに登録され、その後退会手続きを取られていないため**万円(ry」が来たらしい。不況やと迷惑メールが活気づくのかねぇ。

そういえば、研究室のOBの方で迷惑メール対策のビジネスを立ち上げたという人がいるらしい。その人が月曜日にくるらしい。何がすごいって役職名が総帥らしい。え、代表取締役とかじゃなくて総帥なんですか、まじで?と思ったけど公的書類にも書いてきはったしマジで総帥らしい。なんかわくわくするな~

2009年2月4日水曜日

おわらん仕事

いちおう講義するってのは終わった。90分はさすがに話がもたんし、相手もうんざりだろうから一時間ちょいで切り上げた。すげぇ疲れる。これ毎週何個とかこなす教官ってすごいな。教壇に立って見ると意外なほど生徒がなにしてるかよくわかる。うーん自分が聞いてる側のころは始終爆睡しまくってたので、悪いことしたなぁと。(まぁ熱心に聞かれても自分の場合はなんか怖いというか、あー間違ってるかも知れんし、ごまかしたいとこあるからあんまり見んといてって気分になるけど)なんかもうちょっと学生さんが興味持てるような手持ちのネタがあったらよかったのになぁと反省。もうちょい知ってること他人に説明できることの幅広げんとなぁ

あぁこれでしばらく人前で話すのとはおさらばじゃと思ってたら、口頭発表が回ってきた。なんでも例のG●OEで国際シンポジウムを開く必要ありとかで、それの内部の招待講演枠がのこってたとかで教授が推薦してくれはったとかなんとか経緯がよくわからんうちに決まってた、あまりにも謎い。というかいくら身内のシンポジウムとはいえその枠って学生が使っていいのか?履歴書的にはうれしいけど…。英語なんでさすがにわりとしっかりめに準備せんとやばいなぁ。英語の口頭発表を学生のうちに一回はするってのはひそかな目標ではあったんだが、なんせ話が急なもんだしあと20日(しかもその前にポスター発表も一件ある)ってことで若干焦る…。うぁぁ…

2009年2月2日月曜日

昼ごはん

たまには理系な話以外を

ちょっくら母に連れられリッツカールトンの一階のスプレンディードなるレストラン行ってきた。リッツカールトンは内装が本気でヨーロッパ調なので行くだけでなんかキャラちゃうけど優雅な気分になるな。日本で無い度が大阪市内最強だと思う。はー普段いる場所とはえらい違いだわ。暖炉で火燃えてるし。なんつうか普段があまりにガサツな日々を送っているのでたまにはこういうとこ来んとなぁ。

ランチに行ったんだが、ここの凄いところはランチにデザートビュッフェがついてることだ。ランチビュッフェとかデザートビュッフェに軽食メニューがあるのはちょくちょく見るけど、ここはランチ本体は一品づつちゃんとサーブしてくれて、デザートだけがビュッフェ。ランチがうまー&しっかりしてる分デザートビュッフェゆーてもそんなに食べられへんのが悩みやけど。リッツカールトンのケーキ有名やし、ビュッフェやのにかなり凝ったモノが食べられて大満足。レアチーズとマロンクリーム?がウマーだった。どうも私はグラスにクリームやらが詰まった系が好きらしい。二時以降はティータイムになるぽく、デザートビュッフェ単品でも行けるっぽい。

とりあえず2日分ぐらいのエネルギーを摂取してもうた気がするのでしばらく運動と粗食生活かねー。まぁ明日の仕事でエネルギー使い果たしそうやけど。

2009年2月1日日曜日

仕事が降ってくる

あまり心穏やかでない週末。

金曜日にいろいろくらったもので。
ひとつには論文査読結果が返ってきた。
内容とか計算についてはさほど突っ込まれなかったので、書き方を改めればいいっぽいんだが「英語が論文としてプッ…」ってなコメントが。うーん中学生英会話な単語しか知らないので、あまりに表現が論文として拙かったらしい。英作文とか会話と違って意味がとおりゃぁいいじゃんだといかんのだなぁ。We think は論文ではつかっちゃイカンのだな、基本かもorz。とすると、これまで書いてきたやつもかなりひどかったろうによく通してくれたな、あーはずかし。それにしても、いろいろ直し方まで書いてくれてたので査読してくれた人は親切だ。自分もたまに査読を代わりにすることあるけど、スペルミスとか文法ミスとか全然気づかないわ…。日本語も英語も硬い文章書くのは苦手。論文は特に苦手っす。業績=論文数なところあるから苦手苦手いうてたらあかんのやけどなー。結果でるのはうれしいけど論文書くのがユーウツや。

もう一個のユーウツは、2日後に講義を教官のかわりにせにゃいかんこと。90分なに話せと。ていうか金曜日に言って次の火曜にやれってそりゃきつくないっすかセンセー?とりあえず、こないだのレビュートークで準備不足のツラさが身にしみたので、一応何話すかを紙にぐだぐだ書きつけてる。研究内容話せばいいやんって感じだろうがいかんせん自分の研究内容はそのジャンルでも、おたっきーすぎるので専門外の学生に話すのはこっちも相手も苦痛すぎる。そんなわけで近藤効果を時間を稼ぐために式書きまくって紹介とかで済まそうかと。黒板に式書くのは時間稼ぎにはもってこいだ。服がチョークで汚れそうでやだなー。

2009年1月28日水曜日

ifortでのベクトル化

今後、なにかと計算規模をスケールアップさせたいんだが、何が問題って計算時間である。今ので一個あたり16時間~20時間かかっていて、扱う状態の数を2倍にすれば、行列要素は4倍になるので単純に考えて4日ぐらいかかるのか。4~5日ですめばいいけど、基本的にあちこち入れ子になったループが存在しまくっているので実際にはもっと時間かかるんじゃねーかと。さすがに処理の高速化をぼちぼち図らないといけないか。

処理を早くするには並列化が基本みたいだ。どんな作業も一人ですべてやるよか何人かで手分けしたほうが早く終わるにきまってる。でも手分けするときに作業内容とかを説明したり、終わったあとに作業内容を統合する必要が出てくる。PCでも同じことで、スケジューリングやらバリア同期をしなあかんのでよっぽど並列処理に向いている部分がないと、並列化させたところでさほど恩恵があるわけではないらしい。(アムダールの法則ってやつか)並列計算に向いてるのは検索、大規模行列の線形代数な演算とからしい。

並列化で最も手っ取り早いというかなんとかつかえそうなのが、ベクトル化とマルチスレッドやろうと思ったので調べてみる。
最近ifortでコンパイルしてるとしょっちゅうdo ループがベクトル化されました っていうメッセージが出てくる。ベクトル化ってスパコンしか関係ない話じゃねーのと思ってたのでなんか不思議に思ってたが、IA-32なCPUでは疑似ベクトル化ができるらしい。
ベクトル化ってのがそもそもなんやねんって話だが、要はレジスタを塊で使って一気に大量の数値を演算しようっていうことみたいだ。


do i=1,10
x(i)=a(i)+b(i)
end do

みたいに演算の順番を変えようがまったく影響ないループだと、aの1~10、bの1~10を一次元配列に格納してその配列の和を計算するのと同等なので、レジスタの集合を配列のように使えば10回計算しなあかんところを一回で済む。10回程度だと大してなんも変わらないけど一万回が一回に化けるとだいぶ違う。地球シミュレータとかSXシリーズとかのスパコンはそれ専用のベクトルレジスタを大量に積んでてそれゆえ行列演算が異様に早いっぽい。(とはいえベクトル型のスパコンを作ってるのはいまやNECのみらしいが)こういう並列化の仕方は、SIMD(Single Instruction Multi Data)というらしい。

実はIA-32なアレにはこのSIMDな処理ができる部分が存在するらしい。CPUのレジスタというと32ビットの汎用レジスタeaxなどなどが使われてるイメージだが、実は128ビットのレジスタxmm0~xmm7というのが存在するそうな。128ビットなので倍精度実数なら2個格納できる。浮動小数点演算は通常、名前も浮動小数点計算ユニットであるFPUとかゆーst(0)~st(7)レジスタを持つところで行うらしいが、xmmレジスタをつかうこともできる。xmmレジスタをまとめて使ってベクトル化したような処理をおこなうための拡張命令がSSE/SSE2/SSE3(SSEはStreaming SIMD Extensionsらしい)
SSEはもともとインテルがつくったのでインテルのコンパイラはこれを使えるのが多い。ifortで出てくるベクトル化しましたってのは実はこのSSE2やらSSE3やらをつかってxmmレジスタで疑似ベクトル化してるということみたいだ。実際、-Sオプションで、アセンブラコードを吐かせてみると、movsd だの %xmm0だのそれつかってるぽい形跡がちらほら。ちなみにmovsdはmovのSSE2バージョンぽい。やはりインテルのコンパイラは頭ええんだな。ところで、DOループ中にprint,read,writeがあるとこのベクトル化ができなかったりする。ベクトル化の詳細レポートがほしい時には-vec_report3とするとよし。

2009年1月26日月曜日

長年の疑問

前々から思うことなんだが、なんで日本の大学は留学生超優待なんだろう。
こないだも円高とかリーマンショックで留学生の生活が大変、救いの手をって新聞記事になってたけど、救わなあかんのは留学生だけちゃうやろうと。いっとくが国費で来てる人々はかなりいろいろ手当もらってて余裕アリだぞ。

まぁこういうこと外で言うとなにかと叩かれるし、自分が困ってるわけでもないのに嫌な奴と思われそうなのでなにもいえないけどな。

自分たちによこせとか彼らにやるなってわけじゃなくて、なんだかリソースの配分にあまりにも偏りがあると、国内の学生のやる気を削ぐよ、それって結果的に損なんじゃないのってことが言いたいのだ。

国内の学生への補助は手薄だと思う。奨学金はほとんどが返済義務アリだし。企業や国が出す、返済義務なしの奨学金はほとんどが留学生対象。そりゃDに進学する日本人が少ないわけだわ。博士課程の日本人率が少ないって問題だと思うんだが。進学する人数が少ないからって留学生補充というのは本末転倒だろ、たいてい皆本国に帰っちゃうし。卒業後に日本の企業や研究機関に定着する率とか考えても、日本人の学生への補助も増やして進学しやすくするのは、投資に見合うリターンが国にあるかと。優秀な子でも、金かかるし、早いこと稼ぎたいですって皆就職してしまう。ある程度の数が基礎研究に居ないと、何十年後かに困ると思うぞ。

私費留学生で大層苦学してる人もいるのでその人たちには助成が必要なのはわかる。だが留学生=まじめ・苦労人、助けてあげなきゃ一辺倒ではないと思う。なにがほんとうんざりするって、大学外の少し年長な方々は「日本の若い学生はさぼってばっかりで留学生のほうがまじめなんでしょ」(ソースはうちの親族)てな発言をされる。それ実情見てから言えよ、まじでやる気そがれるわ。政府高官の方々同じような意見やからのいまの政策なんやろな。頼むから日本人の困ってる子も助けたってくれよ。

たしかに留学生のなかにゃスゲぇ優秀で成果バンバンあげてしかも性格もイイてな超人もいるが、そういう人ばっかでは無いんだよな。なんか長年、あの研究室にいると嫌な部分もいろいろ見てしまって「国際」ていう言葉にアレルギー持ちになる。日本の大学にいるはずなのに聞こえてくるのがよくわからん言語のほうが多いってのは本当に憂鬱。大学院行って外国嫌いになりました。だめじゃん。個人単位ではいい人なんはわかるが、あの環境にいるとフィルターが頭の中にできちゃって狭量になってる自分がいて嫌だ。

2009年1月25日日曜日

寒すぎ

久しぶりに日記的な文章
とにかく寒すぎる。風邪をひいた。
基本的に寒いの嫌いで、寒い時期は体調がよろしくない。こーなんちゅうかヤバくはないけどうっとおしい不調に悩まされることが多い。しもやけとかなんとなく風邪とか。血行不良とか冷え症がすべての原因なんだろうなぁ。起きてる時間大半座って作業してんだからしょうがないけど。
そろそろ学会の準備を始めないとあかんかなと。データ処理に追われる。はよ終わらんかなぁー、遊びてー、データ処理は単調作業ですぐ飽きるので嫌いだ。プログラム作って計算結果出た時点で満足してしまってさて次のことしたいなぁってなる。でもデータ処理をせんと「研究成果」として扱われる発表とか論文とかのネタにならんわけで。うぅジレンマ。シェルスクリプトで大半なんとかしようと思ったけど、細かいチューニングとかExcel使う部分やグラフ・図の作成はどーしても手作業が必要。

定例の3月の以外に2月にも身内な学会とはいえ一応国際な学会がある。2月の会場が自分とこの大学でほんとよかった。出張はめんどい。
3月の場所が東京なのでホテルを確保した。東京でホテルを安く上げようとケチるとロクなことがないので、今回はわりといい目のを予約した。地方やと一泊7000円でだいぶ快適に過ごせるのに…。やっぱ学会は地方がいいです。そして、こないだ使った丸の内メトロポリタンがちょー快適で「あぁやっぱええホテルってええわぁ…」と味をしめてしまったのもある。さすがにメトロポリタンクラスのは無理やけど、3泊せにゃならんので健康と睡眠には代えがたい。睡眠と水分をしっかりとらんとダメな体質ぽい。

あぁとりあえずさっさとグラフつくらんと。Excleいじるだけってつまんねー。データ処理よかOpenMPで計算の並列化うまいことできるか試してみたいんやけどなー。せっかく自由にいじれるクアッドコアが手元にきたんだから並列化を試さん手はないと思うのだ。

2009年1月24日土曜日

Fortran備忘録:ファイル名とかいろいろ

数値計算でよくある「繰り返し計算の各回での結果を、第何回目であるかの数字をつけたファイル名にして出力する」とか「あるパラメータでの計算結果をパラメータの数値をファイル名に入れて出力させる」とかのFortranでのやり方まとめ。Fortranは文字列と数値間のキャストの組み込み関数がないのでメンドイ。

1.まず、ファイル名は文字列変数で指定することができる。
2.文字列変数の結合は//で可能
なのでたとえば
character(30) ::param,filename
ていうふうに文字列変数を用意しておいて


open(8,file=param//filename)

なんてのも可能。

3.integer,real,double型の変数を文字列変数に変換やその逆をする場合には内部ファイルを使うとよい。
内部ファイルというのは、入出力先をプログラム中の変数にしたものである。
たとえば

program main
implicit none
integer :: i,j
character(10) :: a,b
i=3
a="5"
!b に i の値を文字列として代入
write(b,*) i
!aの値を数値としてjに代入
read(a,*) j

print*,b
print*,j

end program main

とすれば、3 5てな出力が出てくる。

4.ただ出力を見てもわかるように、bでは3の前にいらん空白が入っているし、これをそのままファイル名で使うと、10文字分の領域を確保しているせいで後ろにも空白が入ってきてなんとも間抜けたファイル名ができる。そんなときには文字列の組み込み関数のTRIMとADJUSTLを組み合わせるといい感じ?TRIMは右側の空白を取り除く、ADJUSTLは文字列を左詰めにする関数。

open(10,file="a"//TRIM(ADJUSTL(dis))//"total")

的な。

5.ファイルに埋め込みたいのが整数ならこれでいいんだが、実数型だと1.000000.txtみたいにいらん長さのファイル名になってしまう。
対策例1
・文字列の部分配列を取り出してくる
文字列は配列のように、1文字目から3文字目みたいに切り出してくることができる。
たとえば
a="abcdefg"
なら
a(1:3)
は"abc"である。
実数を文字列に変換した場合には最初に符号とかを入れる関係で頭に2文字ほど確保されているらしく、a=1.00000000から1.0だけを取り出すという風に切り出す場合にはa(1:5)という風に指定すればいいみたいだ。

対策例2
・何文字目までが有効桁かを探る→切り出し

valはcharacter(30)
nonzero,iはinteger

nonzero=0
do i=1,30
if ( val(i:i) > "0") then
nonzero=i
end if
end do
open(15,file="pot"//TRIM(ADJUSTL(val(1:nonzero))))

2009年1月20日火曜日

CUDAをコマンドラインから使えるようにしよう

VisualStudioが意味フなのでWindowsでもコマンドラインから使えるようにしたいなぁと。どうせ本番はLinux機の可能性100パーですし。
ちなみにOSはWindowsXPです。
コマンドラインから使えるようにするには環境変数をいろいろいじらんとあかんみたいだ。
先人の知恵がつまった参考文献3つで言っていることが違うぜ、どうしよう
http://tech.ckme.co.jp/cuda_inst.shtml
http://exth.net/~ohshima/wordpress/2007/10/30/5/
http://chihara.naist.jp/people/STAFF/imura/computer/OpenGL/cuda1/disp_content

環境変数INCLUDEなるものが見当たらないので、まず真ん中の人がやっているのと同様に、システムのPATHをいじることにする。
とりあえずPATHに


C:\Program Files\Microsoft Visual Studio 8\VC\bin;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;C:\Program Files\NVIDA Corporation\NVIDA CUDA SDK\common\lib


を足してみる。
で、昨日ためして動いたbandWidthTest.cuをコンパイルして実行すべく


nvcc -o test.exe bandWidthTest.cu -I"C:\Program Files\Microsoft Visual Studio 8\VC\include" -I"C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\common\inc" -L"C:\Program Files\Microsoft Visual Studio 8\VC\lib" -L"C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\common\lib" -lcutil32


てなバッチファイルを作って投下。
test.exe無事生成
が、cutil32.dll見つからないというエラーメッセージ出て動かず

そこで最後の文献を参考にして
C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\common\lib\cutil32.dllをC:\Windows\system32へコピーすると動いた…いいのかこれで?
たぶんファイル構造をつらつら見るに、
C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\bin\win32\Release
にPATH通しといても同様に動くはず。このwin32\Releaseやwin32\DebugはVisualStudioのコンパイラ経由でDebugなりReleaseなりするときに必要なDLLとかを全部ほりこんであるぽいのでPATH通しとくのがいいんじゃないかなぁ。やっとこ

なんにしろ無事うごいたっぽいのでCUDAが出始めのころに試して記録を残してくれた先人たちに感謝感謝。

2009年1月19日月曜日

CUDAを試す

どうやらCFSは順調に動いたようで磁場下での1粒子励起スペクトルが綺麗に出た。今までの方法と段違いにきれいな結果だ。ひじょーに満足。作るの苦労した分、上手くいくとめちゃうれしいわぁ~。これで夏の国際会議のネタが確保できる見通しもついた。

ほっとしたので、自宅機で噂のCUDAを試す環境を作ってみる。CUDAって何て読むんだろ。きゅーだ?くだ?
研究室でも最新版Teslaを試そうぜっていう話がでてたんだが、取引先の業者さんがまだ性能評価終わってないらしい。Teslaは結構熱がでるとかでファンをどうするとかGPUコンピューティングするなら帯域がどーとかそれなりに相性とか考えなあかんぽいとか。評価終わるの待ってて予算執行がぎりぎりになるんもあれだし、導入はたぶん来年度かねぇ。それまで自宅のにはせっかくCUDAが動かせるGeForce9800GTが入っているので試しにいじってみようかと。GPUつかったら画面が出力できないとかOTLなことになるんじゃないのとかいろいろ無駄におそれたがべつにそんなことはないらしい。
http://tech.ckme.co.jp/cuda_inst.shtml
に詳しくインストールの仕方が書いてあるのでとりあえず試す。
ドライバは対応してるのがもともと入っているのでいじらない(グラボのドライバってなんかいじってえらい目にあった知人の話聞いて以来怖い)
NVIDAのページhttp://www.nvidia.com/object/cuda_get.htmlからcuda toolkit cuda sdkのバージョン2.0をダウンロード。バージョン2.0を動かすためにはWindowsではVisual Studio 2005C++が必要らしいのでそれもMicrosoftのページからダウンロード。最新版は2008らしいがCUDAの2.0は2005じゃないといかんらしい。あとDirectXつかうサンプルもあるらしく、DirectX SDKも入れといたほうがいいらしいが、入れ忘れた。まぁとりあえず放置。

CUDAについてはtoolkit → sdkの順でインストールすべしとのこと。インストールはデフォルト通りにしといた。後でみたらいろいろパスが増えとる。参考資料によると、CUIでコンパイル、ビルドするにはパスをいろいろいじる必要があるらしいが、今日のところはとりあえず動くかどうかをチェックしたいのでまたとりあえず放置。
デフォルト通りにすると
C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\projects\simpleTemplates
下にsimpleTempletes.slnなるものあり。
とりあえずこれが動くかどうかでCUDAが無事インストールされたかどうかがわかる模様。
これをクリックするとVisual Studioが立ち上がる
ビルド→ソリューションのビルド
なんか一応正常終了したっぽい
Visual Studio使ってないもんでよくわからんのだが、たぶん緑の矢印が「実行」てのは共通だろうとあたりを付けてとりあえずそれを押す(これデバッグらしいが)

とりあえず動いたっていう解釈でいいのか…?謎いわ。やっぱLinuxのほうがgccで直コンパイル+ビルドできて見通しつけやすそう。sampleにMonteCarloあんのが気になる
結果がWebにあがってたbandWidthTestも試す

出てる項目大体いっしょぽいなぁ。ビルド時に警告でたけど動いてるってことか、よーわからん。CUDAなかなか手ごわそうじゃ。

2009年1月18日日曜日

CFSバージョン起動

最近このブログ内容が偏ってると周囲の知人からは不評を頂いてたりする。しゃーねーやん、日々そーゆーんしか扱ってないんだもん。ここんとこ毎日家と研究室を点と線やし。google analyticsをみると、Fortran関連の検索で来ている人が多い模様。Fortran関係者の役に少しでもたってるとよいのぅ。Fortranのちょっと知っとくと便利情報とかエラーメッセージの解読方法とかあんまりWebで載ってないもんなぁ。わかったらまたぼちぼち書いていこう。

さてそんな無機質な日々の甲斐あって、なんだか数値計算の新バージョンがなんだかそれっぽい答えを返し始めた。ぬかよろこびでないことを祈る。数値計算ってテストケースがうまくいったーと思ったら本番投入したらわけわからんエラー出ることよくあるし。

新バージョンてのは12月の頭ぐらいから「学振結果待ちうぇぇ辛い…」な気分をごまかすべく作り始めたComplete Fock Space略してCFSをつかったNRGの計算コードでなんつうかまたマニアックな代物である。まぁそうでもなきゃこれに手だしてないからある意味学振に感謝かな。NRG自体が非常にアレゲというか人口少ない(一不純物ソルバーとしては史上最強のはずなんだが)計算手法でその中でもまたマニアックな手法らしく、似ているDM-NRGについては結構取り上げられてるけどCFSはあんまりというかほとんど見ない。DM-NRGは状態を二重にカウントしてて誤差でるってな噂あるんだけどなぁ。NRGでは計算機で計算可能にするためにステップごとにあまり大事じゃなさそうな状態を捨てていく、つまり繰りこんでいく。これが頭イイなやり方の反面いろいろ問題を起こす。CFSはこの捨てちゃった分も拾ってきて計算できるので精度がものすげー向上する&磁場が入っても大丈夫らしい。磁場はいったときにSTMのスペクトルがどうなるかを計算しようとおもったらこいつが一番だろうというわけでちまちま作ってたわけだ。大量のデータ扱わなあかんしめっちゃ実装するのめんどくさかった。モデル計算のくせにメモリ数G使うとか。とにかくなんとか動くもんができてやったーてな気分。なんかもうちょっと高速化できそうな方法も思いついたんで次はそれだな。

2009年1月17日土曜日

RedmineをFedoraで動かす

サーバー立てても文章置いとくだけじゃあれなので、なんかサービスを入れようと。とりあえず研究室で役立ちそうなものということで、Redmineをいれたいなぁと。実機でやってミスってはまずいので家のFedora10 on VMware で試す。LinuxにはInstantRailsがないのでメンドイ。大学行くまでに忘れそうなんでメモ

まずruby on railsが動く環境にしないといけないので、それの設定。
ruby周辺のインストール


yum install ruby
yum install ruby-devel
yum install icb
yum install rdoc


RubyGemsをhttp://rubyforge.org/frs/?group_id=126からもらってくる。適当な場所で展開して

ruby setup.rb
gem install rails


Ruby on rails は最近のはデータベースにsqlite3を使うらしいので

gem install sqlite3-ruby


Redmineをhttp://rubyforge.org/frs/?group_id=1850
でもらってきて、展開。展開したフォルダ中の/config/database.yml.examle をdatabase.ymlとしてコピー。
インストールの手引きにあるように、database.ymlのproductionの部分を

production:
adapter: sqlite3
dbfile: db/redmine.db
timeout: 5000

として

$ rake db:migrate RAILS_ENV=production
$ rake load_default_data RAILS_ENV=production
$ script/server -e production

でWEBrickが起動、localhost:3000で待ち受け状態になる。デフォルトランゲージの選択でjaにしていても、最初のadminでログインするとすべて英語…。管理のところの言語設定だけでなく、マイアカウントのところの言語設定も日本語にしてやる必要あり。

せっかくApache起動しているのにもう一個Webrick起動してポートも別に開放するのがなんか微妙?なのでApacheと連携させるってのを一度試してみんとなぁ。

2009年1月16日金曜日

あたらしいものは面白い

今週はなんだか忙しかった。
というのも新しい計算機(Quad、i7は高くて買えず。)がきてその設定やらなんやらの作業が入ったから。クラスターではなく大きな筐体なので計算機室におけずに自分の机の横にでかいのが陣取ることになった。ディスプレーも買ったのでディスプレーに前後から挟まれる格好になっている。電磁波とか大丈夫なんやろか…。やっぱワイド液晶万歳。国産のちと高い目にしただけあってわりかしきれいで満足。いままで使ってたD●LLの付属品は比較すると涙目すぎる。

OSはCentOS5にしてもらった。業者の人が一通り設定してくれた。Linuxよくわからんからありがてぇ。念願の管理者権限げと。CentOSは扱ったことがないのでビビりながら使いだす。マウスの右ボタンで端末をディレクトリの中から呼べるのが地味に便利だ。しかし、FTPクライアントもっとええのないのか?デフォルトのgFTPはWindowsで使ってるWinSCPに比べて超使いにくい。WinSCPのいいところは転送時に新しいものだけを上書きとかミラーリングとかのオプションがある+いつも使ってるエディタでリモートのファイルを編集できるところ。なんでLinuxにこれに匹敵するもんがないのか謎い。FileZillaがましっぽいけど、編集を直にはできないっぽいなぁ…。ファイルブラウザも付属のがビミョーに使いにくいしなんかええのないかなぁ。とまぁ不満はちょっとあれど、コンパイラとか満載やし、X-Windowやし、いろんなもんのインストールがrpmとかで楽勝なLinuxは研究用としてはWindowsより使いやすいかも。大学のサイバーメディアセンターがなぜLinuxからWindowsに切り替えるのかまったく理解不能。とりあえずWineもつかってみたいな。

Mathematicaの設定もすんだ。公費で買っている分、使い方を研究室の人間に知らせなければいけない。何度も聞かれるのが面倒なので、サーバーたててWebページで公開しとくことにした。Webページつくるん結構面白いけどいろいろよくわからん…。週末はこれと、いま作ってる計算コードいじって終わりそやなぁ。GPUコンピューティング(CUDA)にも手を出そうかって話も出つつあるしどうなるんやら。おもろいけどなんか妙に忙しくなりつつある。

2009年1月12日月曜日

BLAS+LAPACK

VMwareのFedora10にBlas+Lapackを導入してみるテスト。
BlasとLapackってのが何かというと、線形代数の計算用のライブラリで、行列の対角化とかをサクサクやってくれる賢い子。数値計算には欠かせない。Fortranで書かれているのでFortran使いにはなんとも使いやすい。(Cからも比較的簡単に使える)ソースはF77だけどF90からもなんも変更なしに使える。

ここを参考に:http://www.obihiro.ac.jp/~suzukim/masuda/ifc_lapack31.html

ソースからビルドしなあかんような噂を聞いていたのできつそうやなぁとか思いつつまずはNetlibからソースを落としてくる。展開しててけとーなところにフォルダを置いて、まずはmake用のmake.incをいじる。フォルダ内にmake.inc.exampleがあるので
cp make.inc.example make.inc
としてmake.incを作ってやる。intel Fortran Compire用はこんな感じに


####################################################################
# LAPACK make include file. #
# LAPACK, Version 3.1.1 #
# February 2007 #
####################################################################
#
# See the INSTALL/ directory for more examples.
#
SHELL = /bin/sh
#
# The machine (platform) identifier to append to the library names
#
PLAT = _LINUX
#
# Modify the FORTRAN and OPTS definitions to refer to the
# compiler and desired compiler options for your machine. NOOPT
# refers to the compiler options desired when NO OPTIMIZATION is
# selected. Define LOADER and LOADOPTS to refer to the loader and
# desired load options for your machine.
#
FORTRAN = ifort
OPTS = -O3
DRVOPTS = $(OPTS)
NOOPT = -OO
LOADER = ifort
LOADOPTS = -L /opt/intel/Compiler/11.0/074/lib/ia32
#
# Timer for the SECOND and DSECND routines
#
# Default : SECOND and DSECND will use a call to the EXTERNAL FUNCTION ETIME
TIMER = EXT_ETIME
# For RS6K : SECOND and DSECND will use a call to the EXTERNAL FUNCTION ETIME_
# TIMER = EXT_ETIME_
# For gfortran compiler: SECOND and DSECND will use a call to the INTERNAL FUNCTION ETIME
# TIMER = INT_ETIME
# If your Fortran compiler does not provide etime (like Nag Fortran Compiler, etc...)
# SECOND and DSECND will use a call to the INTERNAL FUNCTION CPU_TIME
# TIMER = INT_CPU_TIME
# If neither of this works...you can use the NONE value... In that case, SECOND and DSECND will always return 0
# TIMER = NONE
#
# The archiver and the flag(s) to use when building archive (library)
# If you system has no ranlib, set RANLIB = echo.
#
ARCH = ar
ARCHFLAGS= cr
RANLIB = ranlib
#
# The location of the libraries to which you will link. (The
# machine-specific, optimized BLAS library should be used whenever
# possible.)
#
BLASLIB = ../../blas$(PLAT).a
LAPACKLIB = lapack$(PLAT).a
TMGLIB = tmglib$(PLAT).a
EIGSRCLIB = eigsrc$(PLAT).a
LINSRCLIB = linsrc$(PLAT).a

っていじるのは

FORTRAN = ifort
OPTS = -O3
DRVOPTS = $(OPTS)
NOOPT = -OO
LOADER = ifort
LOADOPTS = -L /opt/intel/Compiler/11.0/074/lib/ia32

だけですが。OPTSやNOOPTは最適化のオプションなのでOがゼロではなくオーなあたりがちょっと罠な気がする。
で、
make blaslib
make lapacklib
make tmglib
と3回いろんなブツをコンパイルする。結構大量にコンパイルするのでCore2Duo上位機種の実力とやらをみせてもらおうか、って感じだ。まぁなんとかこれで必要なblas_LINUX.a,lapack_LINUX.a,tmg_LINUX.aができたので、あとはこれをlibってなフォルダにコピーして名前変えてシンボリックリンクとやらを貼るかーってところで、Fedoraならyumでblas,lapackをインストールできることを知る。いままでの苦労は…orz
というわけで、CentOSやFedoraなら

yum install blas lapack

で一発です。まぁソースからビルドする方法は管理者権限がない場合には必要なので知っといて損はないか…。
yumでインストールすると、/usr/lib下にlibblas.so.* とか liblapack.so.*ができる。
コンパイル時にリンクさせるのにフルパスはめんどくさいので

ln -s ~/usr/lib/libblas.so.3 ~/usr/lib/libblas.so
ln -s ~/usr/lib/liblapack.so.3 ~/usr/lib/liblapack.so

とすると、GNUのライブラリの規則ってもんが働いて、コンパイル時に
ifort -llapack -lblas test.f90
と2つのオプション -llapack と -lblasをつけるだけでいいぽい。ちなみに/usr/lib/以外のところにライブラリを作った場合には
-L ~/lib
のように-Lオプションでライブラリの場所をしめさないといけないらしい。

さてこれでlapack使ってるNRGのコードが家のPCで動くぜ~ってmakeしてみるとコンパイル+リンクはうまくいって実行ファイルができるのに動かした瞬間「強制終了」ってコンソールに出る。gdbのお告げによるとSIGKILLキター→強制終了らしい。SIGKILLはプロセス強制終了のときに出すシグナル…。どうやらメモリを大量に喰うプログラムなためOOM Killerに叩かれた模様。まぁ倍精度で4400*4400の配列を10個とか用意したら1G超えてきついわな、これOKな大学の計算機ってすげーんだなぁ。配列サイズを小さくしたら無事実行された。これで家の環境だけでプログラム作る→テスト→バグ取りが完結するようになったので作業効率は上がるだろう。とりあえずDDDっていうgdbと連携するGUI付きデバッガもyumで入れてみた。今まで見たく気合いと勘だけでバグとるのもどうかと思ったので次はデバッガの使い方を…。

2009年1月11日日曜日

Fedora10+ifort

VMware上Fedora10にインテルのフォートランコンパイラをインストールするテスト。
参考資料:http://www.obihiro.ac.jp/~suzukim/masuda/ifc101_install.html

インテルはFortranコンパイラも非商用の目的(研究とか)に使うのはタダでダウンロードさせてくれる。条件に"accept"で、メールアドレスを登録すると、ライセンスキーが送られてくる。
VineLinuxの場合は、ほんとお手軽にsuでルートでログインして、./install.shってするだけでできたんだが、Fedoraはこうはいかない。Fedoraの場合はセキュリティ対策の一環としてSELinuxというものを導入しているらしく、root権限だけではコンパイラのインストールとかができないらしい。インストールするためには、SELinuxをPermissiveモードとやらにする必要があるらしい。モードの切り替えは/etc/sysconfig/selinuxファイルのSELINUX=enforcingをSELINUX=permissiveにするか、setenforceコマンドで一時的に切り替えるぽい。

あとなぜか、libstdc++.so.5 ライブラリがないよという問題が発生。こーゆーC++のライブラリってFedoraは標準じゃないのか??必要なライブラリを調べるために
yum provides libstdc++.so.5
とするとどうやら compat-libstdc++-33-3.2.3-64.i386 ってのがいるっぽかったので
yum install compat-libstdc++-33-3.2.3-64.i386 としてインストールすると解決。

インテルのコンパイラはFedora9までが標準っぽく、それよりあたらしいFedora10ではアーキテクチャーが判別できないとかglibcのバージョンがわかんねぇとかのメッセージがでたが、スルーしてインストールしても無事っぽい。
で、インストールした現行バージョン(ファイル名:l_cprof_p_11.0.074_ia32)の場合
.bashrcの最後に
. /opt/intel/Compiler/11.0/074/bin/ia32/ifortvars_ia32.sh
とすることで、ログインするたびにパスが通ってコマンドifortでコンパイラを使えるようになる。

とりあえずFedora10にもGeanyとか入れてFortran用の環境を作ってみる。なぜかコマンドラインからGeany起動した場合はifortでのコンパイルがうまくいくんだがショートカットから起動すると無理。謎、たぶんパス関係?まぁいいや、ifortが手に入ったのであとはlapack+blasをなんとか積みたいところ。

2009年1月8日木曜日

Geany(FortranのIDEにもなるらしい)

なんだか初期の選択をミスったせいで、ずーっとFortranをつかっているわけだ。古代な言語とはいえ物理の数値計算には使い勝手がかなりよいしとにかく速いのでC++とかに乗り換える理由もさしてなくそのままずーっと使っている。
唯一不満なのが、IDEがあんまりないこと。情報の実習のTAやってて「Eclipseすげー」だったのでFortran用のCDT探したが、リリースされてるPhotranはうまく動かなかった…。Silverforestが出してるPlato3も一応IDEなんだが見た目やコンパイラ自体の仕様が?なのでどうも…。
今日偶然に「おぉこりゃ満足できるレベルかも」なフリーのIDEを見つけた。Geanyという。フリーなIDEはそりゃたくさんあるんだが、マイナー言語Fortranをサポートしてくれてるのはなかなかない。Geanyはコードの色分け、サブルーチンとかファンクションとかグローバル変数とかのシンボルの表示、変数名の補間、コードの折りたたみが一通りそろっている。シンボルブラウザと折りたたみできるのがうれしい。(IDEならとーぜん持ってる機能なんだろが、Fortranでこれがあるのなかなかなかったりする…)動作画面はこんな感じ


見た目もなかなかよく、アイコンも「ジーニー」って名前だけあって魔法のランプなのでなかなか可愛かったりする。ちゃんとプロジェクトとして管理する機能もあるし。コンパイラとしてはFortranはgfortranがデフォルトのようだが、ビルド→インクルードと引数の設定 をいじればg95でも実行できた。でもgfortranつかったほうが、エラー出た時にその位置を知らせてくれるのでいいかも。ブックマークの機能がないのがちと残念だけど、使いやすい。たっかいVisual Fortran買わなくてもフリーでなんとかなりそうやん。

2009年1月6日火曜日

いまさらながら学振面接体験記

ついに来た。
日本学術振興会特別研究員、採用内定。やたーっ!!
3度目の正直ってやつだ。学振はこの3年何度も鬱状態に叩き込んでくれたからなぁ。
面接までもつれ込んでなかなかにしんどかった。面接もコメントが「とにかく凄い自信だ…www」だったから正直どーなんって感じで不安だったし。(直後はすごいぐだぐだ考えてたくせに、25日に結果公表されてることを全く知らなくて、正月に教授からメール来て知った。年末はそれ以外に頭悩ますことがいっぱいあったからなぁ)

とにかく、発表練習見てくれたり、しんどいときに相談のってもらったりなにかと付き合ってくれたりした皆さんに感謝です。

DC2で面接てのはボーダーラインで、面接受けてとるのは少数派らしいので今後受ける人用に一応体験記を書いておこうかと。(書類については、面接ってこたぁ微妙だったのかってことで自信ないので書きません。)

時期:今年は11月末だった。午前と午後で合格率に差がでるとか、午後なら一番じゃないとヤヴァイとかいう噂があるけどデマだと思う。とりあえず自分は午後のしかも一番じゃなかった。順番が前後の人にリサーチしてみた結果、午後組は地方から来ている人多数っぽい。たぶん領域ごとに日が決まっていて、その中で地方からで来るのに時間かかりそうな人を午後にしてるんだと思う。同じ研究室でも領域違うと日が違ったし。

ポスター:とりあえずボードのサイズが要綱に書いてあるだろうけど、横長が絶対おすすめ。マグネットは透明で長細いのを用意してくれてるので余白はそこまで気にしなくてもいいんじゃないかなぁ。字は思ってるよりでかいほうがいいと思う。イラストレーターで作って、小塚ゴシックで、現場で貼ったときに、50pでもちょっと小さめかなぁとか思った。内容は理論の式とかぐだぐだ書いてもよっぽど専門近くないと分かってもらえなさそうなので、この半年でどんだけ業績作ったかを強調して見るテスト。

面接官:大人数。10人ぐらい居てはった気がする。たぶんうち数名は学振の事務の人。実は、審査官がだれかという情報はウェブに上がっている。(私はそれに気がついたのあとからで、あちゃーって感じだった。ちゃんと確認しなきゃ…)領域の中でも、何個かに分類されてそれぞれに審査官がつくので、領域あたり6人とか結構な人数になる模様。で、その細目が違うと、専門も全然違うので、自分にしてみりゃ聞きなれてて日常語な単語も向こうにしてみれば意味フということも十分考えられるので気をつけたほうがいいと思う。(知らなかったのでその辺考慮せんとはしょりまくってしまった…。)

面接:なんせ発表時間4分で原稿見れないので、セリフはかなりしっかり覚えないとやばい。時間内に説明終えると、ブザーは鳴らないみたいです。質疑応答は一番専門が近い先生2人ぐらいが質問してきはります。雰囲気とかはその先生のキャラ次第…。まぁorzなこと言われても通ってることもあります。たぶん、答えにつまったり、おどおどせんと、虚勢でもいいから「自分はこう思う」てな答えを自信ありげに返すのがいいとおもわれる?

その他:結構みんなはやくから集まっているみたいだ。結構直前に行ったら、すわる場所なかった。

終わってみたらそんなもんなんだけど、渦中にいるときは、ものすごく緊張するわ鬱はいるわしんどいよねぇ。だいぶ先だけど今年11月、このしんどいのに立ち向かう皆さんに幸ありますよう。とにかくなんらかの経験値はつくと思います。

2009年1月4日日曜日

Lyx再戦

論文がいやだぁぁぁぁ。でも明日の仕事始めである程度進めてたよんてのを示さんと上からの御怒りがきそうなんでいまから焦って校正するか。
Texは仕上がりがコマンドからは想像もつかないのが問題。なのでLyxを懲りずに試す。
Lyxこないだ試したのがうまく動いてなかったのは、babelってのの設定とインストーラーの選択をまちがったからぽい。ここ→http://www.int.otaru-uc.ac.jp/lyx-howto/install/win
に書いてあるようにWindowsへの導入をおこなうと、まぁサンプルは普通に動いた。LyX-160-4-15-AltInstaller-Small.exeてのをインストールしないといけなかったのだな。

なぜか、サンプルがある場所(/example/ja)と違うところにファイル置いてdvioutでみようとするとうまくいかないのが謎すぎる。パスとかの問題?
Lyxは式とかが出力される状態で出てくるのはありがたいんだが、引用文献の番号の書き方とか細かい部分をプリアンプルでちょっといじるってのが難しそうな気がする。ソースに直で書けないし。まぁいろいろやり方はあるんだろうけど。なのでしばらくは下書きをLyx、ソース吐かせて仕上げをWinshellな感じでいいかなぁと。

どうやら明日大学行くと、とある重要書類が届いているみたいだ。うぁぁなんか胃が痛い

2009年1月3日土曜日

メモリの種類とか(いまさら)

昨日は久し振りに研究室の同期と会った。iPhone持ってたので見せてもらう。iPhoneスゲー。最近ブログ更新してねーよねって聞いたらむしろTwitter派らしい。Twitterなぁ、導入したらすごい気が散りそうでなんか手を出せないわ。気晴らしになんかいいのないか聞いたら、Travianがおすすめらしい。興味もったんで調べてみたがなかなかに複雑かつ難しそうじゃ…。
ネット上のゲームなりSNS的サービスなりってどうもあんまり知らん相手とコミュニケーションとることを求められることが多い気がして苦手だなぁ。人脈広げたりさらっと知り合い作るにはいいツールなんだろうけど、携帯メールと一緒で相手の表情読めない分、文章から心理状態を把握せにゃならん気がして無駄な深読みしまくって凄い疲れそう。

さてぼちぼち本業に復帰するか
たぶんこれから実装する計算方法はモーレツにメモリを喰うのでメモリの使われ方ってのを今更ながらに調べる。
メモリは大まかに分けて、コードセグメント、データセグメント、スタックセグメントの3種類のエリアに分けて使われるらしい。アドレス指定とかに使うレジスタもそれぞれに応じてCS,DS,SSが用意されてるとな?
コードセグメントはプログラムコードが機械語に翻訳された本体を収める部分。

データセグメントはデータ、.bssとヒープの3つに大別される。データ、.bssは静的な変数とグローバルな変数が納められる。データには初期化されてるのが、.bssには初期化なしのが振り分けられる。ヒープは動的に割りつけられる変数なり配列なりインスタンスなりに使われる。

スタックセグメントは手続き中の局所的な変数や配列、関数の引数の引き渡しなんかで使われる。

だいたいのところは上に書いたようになってるらしいが、具体的にどんな変数がどの領域に確保されるかというのは言語やコンパイラやその他もろもろによって変わってくる。
Fortranの場合だと
module中の大域的な変数、save属性付きの変数→.bss
allocatable属性な配列→ヒープ
普通にサイズが宣言されている自動配列→スタック
手続き中の変数(mainでも同様)→スタック
てのがデフォみたいだ。

フラットメモリモデルとかいう一般的な方法だとメモリの0x00000000番から順にコードセグメント、データセグメント、そしてメモリ0xffffffff番(32bitなOSでは1プロセスで使えるメモリの最大値らしい)から番号が小さいほうにむけてスタックセグメントが配置される。動的割り付けが行われるとヒープがアドレスの番号の大きいほうに伸びていき、関数の呼び出しなんかをしまくるとスタックが番号の小さいほうに伸びていく。で、動的割り付けでばかでかいのをやっちゃったり再帰手続きでばかでかい配列をつかったりするとヒープとスタックが衝突することがあるらしい。ふつー、スタックのサイズには制限がかかっていて、2~8Mになっている。Linuxだとlimitっていうコマンドで調べることができるらしい。スタックのサイズ制限はunlimit stacksizeで外せるのでそうするとこういう事態が起こってしまう可能性があるらしい。OSの側でそういうの監視してないんかよって気もするが、glibcはスタックがヒープ領域を破壊するのに無頓着らしい…。

そしてFortranの処理系ではヒープ領域へのアクセスがなんか怪しい。Fortranでの配列の動的割り付けはallocateで行われるんだが、たとえば allocate(A(2,2))と2×2の配列を割り付けたあとで、A(1,3)とか「あーそこ配列の定義外やろ…」ってとこに普通にアクセスできるし代入とかもできてしまう。コンパイルもされるし実行も普通にされるし(当然結果は変になるが)、gdbもスルーすることがある。動的な配列割り付けを使うとこのやりがちなバグを見つけるのが難しくなる。

アクセス速度自体もヒープは他に比べて遅いらしいので、数値計算なら配列は大きめに見積もってmoduleで静的に宣言しとくのが正解ってことか?

2009年1月1日木曜日

元旦

あけましておめでとうございます。

うちの家では仕事の関係上、元旦は5時起きだったりする。たぶん一年で最も早く起きる日が元旦…。5時って眠すぎる&寒すぎるだろ常識的に考えて。
なんか軽い時差ボケになりそうだ。

朝、仕事片付けて、初詣に行く。おみくじを2か所で引いて二個とも吉だったのでよかった。元旦に行く近所の神社は毎年結構まとを得たコメントが書いてある気がしておみくじひく時なんだか緊張する。なんとなく神社仏閣にいくとおみくじを引きたくなる。星占いとかとちがって自分が選択している感じがなんか面白いんだろう。今年の占い関連は何見ても自分が該当する部分は「幸運だが注意が必要」みたいなことが書いてある気がする。今年は注意深く生活しよう。

正月の仕事が終わると一気に暇になって結局学会用のデータ処理とか本業関連の作業している。元旦からそれ以外することないんか自分、なんか趣味見つけんとなぁ。

さて明日はバーゲンだ。ええもん見つかるといいなぁ