2011年8月30日火曜日

査読

眠い目をこすりながら、なんとか査読終了。

最初Abstractを見たときは、「おっ、おもしろそう」
しかしデータの詳細を見ていくにつれ、「おいおい、まじか」
最終的には、「また今度ね~」

否定的なコメントを書くと精神的に疲れる。。。

俺はちゃんと期限までに返したぞ!
俺の原稿のreviewerも期限を守れ!

おひさしっ

昨晩から久々に徹夜した。


この首から肩にかけての倦怠感。

人間やめたくなるような虚無感。

今から寝たらダメ人間ですよ、という恐怖感。


う~ん、久しぶりっ


2011年8月29日月曜日

まつりつくば!!

こんばんわ。お祭り男こと、Taqです!!

筑波にかれこれ5年もいるんですね。いや~、時の経つのは早いものです。
さてさて、ここ筑波で由緒正しき歴史のある。いや、たぶんあまりない、お祭り。祭りつくばに行ってまいりました!!

このお祭りは筑波でかなりでかいお祭りで、多数の夜店や、長時間にわたる、ねぶたパレードが行われます。なんでねぶたなのか良くわかりませんが、有名みたいです。

三度の飯より、お祭り!!や夜店!!が大好きなTaqですが、祭りつくばにはここ5年でまだ1回しか行ったことがありませんでした。

んでですね、今年で筑波は最後(キボンヌ)なんで、祭りつくばに行ってまいりました!!


昼過ぎに、Inagai奥さんが、パレードでパフォーマンスをすると言うことで見に行ってきました!
会場に到着すると、JサイズのTシャツを着たお姉さん方がわらわら移動していたのでついて行こうとした矢先、「Mっちゃん!」と僕を呼ぶ声が。
Inagai奥さんことYKKさんでした。そのまま「次こっちでやるからおいで!!」と、パフォーマンス会場へと連行されました。そして、案の定Bossとも遭遇してしまいましたw
希望としてはこっそり見て、こっそり帰ろうと思ってたのにw

この時は、何回かあるパフォーマンスのうちの最後のパフォーマンスだったらしく、みなさんお疲れの様子でした。しかし、ハイテンションぶりは健在でした。ちびっこから、大きいお姉さん方まで、みなさん楽しそうに踊っていました。
踊りが終わったあとは、ビリー隊長なみの「Victory!!」という言葉が聞こえてきそうなテンションでハイタッチしていました。パフォーマンスが、InagaiさんがFBにあがっているので、ぜひ見てみてください。

お子さんの雄姿をビデオに収めるボスの姿。いつもとは違うパパの顔です。
パフォーマンスが終わったあとは、Inagaiファミリーとお祭りを楽しんできました☆やっぱり、お祭りの夜店は最高です!!車なので、残念ながらビール飲めなかったけど、おいしいご飯をいっぱいごちそうしてもらいウハウハなTaqでした☆

夜店の中には、コロナを売ってるお店があったんですが、ジーンズホットパンツ+上水着という、最高のいでたちで道行く男性を虜にして売り上げを挙げてるお店がありました。何回かその前を通ったんですが、車じゃなかったら確実に何杯も買ってたでしょう。その横のお店は、スミノフを売ってたんですが、このお店のお姉ちゃんもきわどい格好をしてて、目の保養になったTaqです。
そして、その横は浴衣を着た綺麗なお姉さんでした。浴衣+黒髪ロングは可愛さ8割増しです。
しかし、そんなおいしい話は転がってるわけがなく。。。そのお姉ちゃん達のいるお店の中には、tatooのいぱい入ったイカツイお兄さん方がいました。。。

いっぱい色んなものを食べ、お祭り終了までBoss一家と一緒に過ごしてもらい、つくば最後(キボンヌ)のお祭りを楽しく過ごせたTaqでした。

Bossからお茶のお土産をいっぱいもらったのでラボの冷蔵庫に入れておきます。みなさん、ご自由にお飲み下さい!

1か月前のお話

1か月前の京都遠征時の写真をばアップする。まじめにポスター発表しているMEMメンバー。

kamiさま

ジューイッシュの参加者と議論する有機酸くん

アワード獲得したUki-Yくんだが、メンターとはほとんど会えなかった。メンターサボりすぎ。

この写真ではMちゃんは日本人に説明中。

komatsuzakiくんは、ぼくの古くからの友人JML Jr.に説明中。


windowmoonさんはとなりのメタルと一緒に浴衣発表。でかい背中は前MBEのEditor-in-Chief、現GBEのEditor-in-Chiefだ。

2011年8月28日日曜日

金曜の雨

金曜の雨のせいで週末の予定が狂いまくり・・・珍しく2日間野球の大会やらが入っていて昨日から東京にいる予定が、土曜日の早朝にグラウンドが使えず大会は延期との連絡。結局1日中ラボに・・・
そして今日の予定も朝もコンタクトレンズを入れてから午前中のキャンセルの連絡が・・・

Bad weekendにならないためには昨日かけて帰ったPCRがうまく行ってることを願うしか無い!!

査読

自分が共著(second)になっている論文がやっとのことで査読に回ったらしい。
投稿から早2ヶ月。。。少しうーん、という感じ。あの雑誌気に入っていたが、最近の周りの状況を見ていると何か変わってきてしまった。

そういえば自分の投稿している論文はどうなったのか?
投稿からこれまた2ヶ月たつがunder reviewのまま。まあ、忙しいしこれは放っておこう。急いでないし。

と、投稿した論文の事ばかり考えていて今朝気付いた。
査読引き受けていたんやった。。。
そろそろ期日が来る。
自分の投稿した論文の査読ばかり早くしろとも言えないので、何とかしようと先ほどまでreviewの下書きをしていた。月曜日には返せる。。。はず。。。きっと。


2011年8月27日土曜日

来年から、、、

つくばに来て早2年半、
そして僕の任期は3年。
つまり今年度まで。


ということで春に海外学振に出していたのだが、無事内定戴きました。
報告が遅くなりまして申し訳ありません。関係者の皆様、どうもご心配をおかけしました。

今回の応募は平成23年度追加募集と平成24年度募集があって、併願が可能だった。
2つも出せてお得♪と抜け目なく併願したら、追加募集分で通った模様。
来年の2月1日に日本を出国しなければいけない。

もちろん、これ以外にもapplyはするつもり。
一番条件に合う(plus待遇がいい)ところを選ぼうと思う。
そのために今日、履歴書用の写真を取ってきた。
あれってなかなか難しい。。。。。画面に映る顔や証明写真の顔がなんだか自分の顔じゃない気がしてくる。結局5回も取り直し(笑)

2011年8月26日金曜日

帰省

今から実家のある福岡に帰る。

今年は帰省時期をずらしたので、いつもよりは涼しめの時期に帰ることが出来る。でも、去年の異常な暑さに比べればマシだろうが、九州の残暑はまだまだ厳しそうだ。

引越しをするATさんから譲って貰った4コアPCは、メモリだけ新しいのを買って実家の方に送った。これで帰省した時にもそこそこの解析を行うことが可能になった。素晴らしい。

9/4~9/7に九州大学で行われる統計学関連学会連合大会に参加する予定なので、今回は二週間ほどあちらに滞在することになる。

久しぶりに、父方の実家である島原は雲仙・普賢岳にでも登ってみようかな・・・などと計画中。

さて、そろそろ出発しよう。本場とんこつラーメンが俺を待ってるぜっ!!

今日も、、、

午前様。
まだラボに居る。

久しぶりのPCR & クローニングではあったが、ここまで手間取るとは、、、

明日は北海道までのチケット申し込みと返金をしてもらいにKツーまで皆で行く。
何やかんやで、毎日いろいろあるね。


ちなみに今日の晩飯はD508メンバーとKENでステーキ。
今週の標語は
「わさびですから」
に決まりました。

明日からは何か問題が生じても
「わさびですから」
で乗り越えてください。

2011年8月25日木曜日

腐海の生まれたわけか。君は不思議なことを考える人だな



腐海は人間が冷やすために使った世界を捨てたために生まれてきたの。

ドライアイスをシンクにぶち込んだらこうなりました(笑)

2011年8月24日水曜日

まさかのブラクラ

下に記述した解析、これは自宅のPCでやっていた。

柳仙会の終わった後帰宅し、簡単なメールチェックを終えた後、気分がいいから音楽でも聴いてまったりしようかとしたときにそれは起こった。

Youtubeで動画を再生していたら、途中でブラウザがフリーズ、そしてそのままPCもフリーズ。後にはスピーカーから流れる音楽の一節のエンドレスリピートによる不協和音が残るのみ。

(゚Д゚)ハァ?って感じ。



ほんともう、    
(゚Д゚)ハァ?      って感じ。



まあとりあえず、同じ解析を次は学校のPCでかけますよ。どうせ明日中に終わらなかったら帰省するから解析を途中でkillして学校のPCで再開する予定だったし、もし明日中に終わったのだとしても、もう一度いかければ帰省中には終わるわけだし。何ら問題はない。ふん。

しかしながら、もう自宅PCでデュアルブートで使ってたubuntuは帰省後に乗り換えますよ。縁起が悪すぎる。

2011年8月23日火曜日

電子媒体資料の管理

そろそろちゃんとやらないといけないよなあと思いながら、データの入力などに割く時間がなくて(面倒くさくて)今までやれていないのがこれである。

これまでは論文、論文以外の資料、画像、様々な実験結果のファイルなどを一緒くたにしてDropboxに蓄えてきたが、ストレージ容量の関係と、データの種類が多くなってごちゃごちゃしてきたのでそろそろ限界が近づいている。

なので、論文管理、その他の資料の管理、さらにそれ以外の雑多なファイルの管理と三段構えくらいのデータ管理の環境を整える必要があるなと思う今日この頃である。

まずは論文管理であるが、EndNote? そんな無駄に高いくせにマルチプラットフォームで使えない(この場合Linux)ソフトに用はありません。基本的にこの手のソフトはLinuxで使えないのならば自分にとって意味はないのでout of 眼中。要は開発状況がActiveなフリーソフトであり、マルチプラットフォームであり、機能面でもEndNoteに劣らない(具体的には論文管理システムに加えリファレンスのためのWordへのプラグイン機能)ものがあればいい。

上記の点を考えると、まあフリーでマルチで機能も充実してるといったらMendeleyあたりが妥当な線ではなかろうかと思っている。

次に論文以外の資料の管理であるが、これはEVERNOTE系のソフトでいいだろう。EVERNOTEはLinuxで使えないのが欠点だが、NEVERNOTEを同時に使えばEVERNOTEの機能をマルチプラットフォームで利用することが出来るので問題ない。フリーではなくなるが、有償版にアップグレードすればWord,Presentationファイルも扱うことができるようになるし。

論文をMendeley,論文以外のPDFファイル、画像ファイル、webテキスト、wordやpresentationファイルなどの管理を(N)EVERNOTEにし、あとはDropboxの容量をもっと増やせばその他の雑多なファイルの管理も何とかなるだろう。全部フリーで、というのはさすがに無理だろうが、別に(EndNoteとかを買うよりは)お金のかかることではないので気にしない。

という風に頭の中ではデータ管理体系の構想は出来上がっているが、何分実行に移せない。

とはいえ、一番面倒な紙媒体の論文のデータをいちいち入力していく作業も、手持ちの論文は3~400報くらいなので、一、二日集中すれば終わることなのであるが。。。

兎に角、この作業を年内にはやっておこうと心に誓っておこう。

投稿した

四年生からやっていたシミュレーション実験の研究成果を纏めた論文を、今日投稿した。


草稿を自分で書いてからはや一年、長かったけど、ちゃんと投稿が出来てよかった。
初めの草稿は英語も構成もダメダメだったと思うが、時間を縫って見てくれた2人のボスに感謝します。

といっても、これからreject or reviseの壁も残っていますし、まだまだ自分の論文が世に出るまでは長そうです。
とりあえずは、reviewの結果が少しでもいいことを祈ります。

まずはこれで帰省前にやること一つ目が終了。後はお盆の間に採ったデータを一度纏める。これが終わればすっきりした気分で帰ることが出来るだろう。


それにしても、今くらいには終わるだろうと予想していたある解析が何時まで立っても終わらない。7taxa,5000bpで一本の系統樹を最適化するだけの(普通ならば)簡単なお仕事なのだが、これがコドンモデルでkappaもomegaもcodon usage(終始コドン除き61個のパラメタ)もone per branchで変えるとなると途端に果てしなきロードへと変貌する。多分二週間くらいかかるんだろうなあ。この解析結果を使った実験は帰省後になりそうだ。

2011年8月20日土曜日

びっくり

今日、土曜日ですがラボに来ている。昨日大腸菌まいちゃったので回収、コロpしてマスタープレート作って、ついでにK.brevisのcDNAをつくってあったのでGAPDHのPCRもやっていた。

K.brevisのPCR産物を泳動している間に予想長を確認するためにファイルをとりにオフィスへ。帰ってくるとなんか変。僕のデスクが…



















なんだか塔になっていました(笑)
犯人はたぶんあの人だろうと思いつつ、ファイルをさがして(結局ラボにあった;)ラボに戻ろうとオフィスのドアを開けた瞬間…
薄暗い廊下にM-たん!!!
誰もいないとおもって開けた瞬間に特にリアクションもなくすくっと立っていたものだからもの、M-たんだと認識するのに1秒ぐらいかかった上に驚きのあまりわけのわからない声を伴い後ずさりしてしまいました…
鍵をあける動作とかなんかアクションをしていたら驚かなかったのですが、周りの明りのなさや土曜日とか動かないM-たんやらのバイアスがかかりにこやかなM-たんの笑顔にもものすごいビビりました。
数分復活できなかった…
M-たんも「おどろいたよー」と言ってましたが、僕は軽くちびりそうでした(笑)

そんな土曜日の午前中の話。
たぶん夜だったらちびってました。

ちなみに最近ギョサンによる光るタイプのものが発売されたみたいです。
軽く怖い気がする。

土浦イオン

昨日土浦イオンに久しぶりに行った。特に買い物はしなかったが、本屋さんで面白い雑誌を見つけたので紹介したい。その名も「I love mama」である。

育児雑誌の1つだと思うが、対象がギャルママなのである。雑誌内で紹介されるママ達は、「美ママ」とよばれ、見た目は完全にギャルである。当然年齢も20代前半。ざっと見た感じ20-22才くらいが大半だが、もちろん子持ちである(でなければママではない)。

記事をそれほど読み込んだわけではないが、一番おもしろかったのは子供たちの名前。「美ママ」達の過剰なまでの漢字に対する美意識、こだわりを楽しんだ。

ああいう名前は試験の時にめんどくさいと思う。1秒でも回答に使いたい試験時に、何枚もの回答用紙に画数の多い氏名を書くのは苦痛だ。でも、もう少ししたらバーツク大も画数が多くて読みにくい名前の学生達が入学してくるかもしれんな、などと考えたり。

ただ家事のやりくりをどうするかなどの記事もあり、さすがの「美ママ」達も避けては通れない毎日の生活が炙り出される。どの「美ママ」達もお化粧はバッチリ、とうか「バッチリの向こう側」までいっているのだが、月々のコスメ代をどう節約するか?とかも工夫してるのかも。

惜しむらくは、「美ママ」だけでなくダンナサマ達の写真も見たかったなぁ。そういう企画も絶対あると思うけど、今月号には無かった。

そういえばビレッジバンガードでギョサンが売ってたよ。


2011年8月19日金曜日

なんだなんだ

MrBayesのHPが現在大規模に工事中みたい。
9月まではダウンロードも出来ないようだ。

これはもしかしてVer. 3.2フラグ?
と密かに期待してみる。

Raining cats and dogs

土砂降りをスラングではこう言うみたいです。

7時に目が覚めて朝ごはんのコーンフレークをもしゃもしゃした後に昼ご飯をつくり、9時に出発しようぐだぐだしていると…雨の音が。
何を思ったか、雨でローテンションになっていたためか出発するのはもう少ししたらにしようとしたのが運のつき…

雨は犬も猫も大騒ぎの土砂降りに。

少し収まるのを見計らってから出発しようとぐだぐだを続行。
10時過ぎくらいに少し収まる気配を感じ出発・・・それが裏目にちゃりんこを漕ぎ始めたらまたも土砂降りとともに強風が!!!
去年伝説が繰り広げられた地金沢の東○インで購入した300円の傘は1年の短い生涯に幕を閉じた。
やっとの思いでラボに到着した。

そして今、服が乾くの待ち。ギョサンユーザーで本当によかったと思う今日この頃です。靴はいてたら悲しいことになってた…

ちなみにギョサンについては↓
ググったらwikiにもあってびっくりしたw

ぐらぐら

最近強めの地震が頻発してますね。
さっきもドーンて感じの縦揺れがあった。

3.11から月日もたってだんだん危機感が薄れてきてましたが、とりあえず備蓄だけはちゃんとしとこう・・・

2011年8月18日木曜日

アミノ酸頻度の類似性を順位相関係数を使って検証するプログラム

何か今Bloggerがメンテしてるのか、新しい方のエディタでは投稿が出来なくなってますね・・・

旧版のエディタに戻しましたので、昨日~今日の間に書きたいことが書けなかった人はどうぞ。

-------------------------------------------------

先日投稿した記事にあったとおり、ある配列とある配列間でのアミノ酸頻度パターンの類似性を検証するプログラムを作りました。

このプログラムでは、手持ちのアミノ酸配列データを入力すると、その中に含まれる全ての配列についてnC2 (nは総配列数)の組み合わせを作ります。それから、全ての組み合わせについて、二つの配列のアミノ酸頻度パターンに相関があるか、スピアマンの順位相関係数あるいはケンドールの順位相関係数を計算して調べます。

計算結果は最終的にn*nの行列として表示されます(必要なのは上三角or下三角行列だけ)。これはテキストファイルとして出力されますが、”スペース”を区切り文字とすればExcelでもテーブルとして見ることが出来ます。勿論各要素がどの配列とどの配列の組み合わせを示しているのかも表示します。

この計算結果の見方としては、自分自身との順位相関係数は1になり、1に近ければ近いほどアミノ酸頻度パターンに相関があると判断します(相関なのか類似性なのかちょっと言い方に戸惑う・・・)。同じlineageに属する配列間の順位相関係数は往々にして大きくなる傾向があります(勿論例外はありますが)。

この中で注目すべきなのは、遠く離れたlineageに属する配列間での順位相関係数が大きくなることがあるということです。distantly relatedな配列間でアミノ酸頻度が特異的に似ているということになれば、それは系統解析の際compositional biasとなって解析結果に悪影響を及ぼす可能性があります。

実際、自分の手持ちのデータを解析すると、確かにcompositional biasがあると思われる配列間で順位相関係数が特異的に大きくなっていることが検出できました。

ちなみに、どのくらい順位相関係数が大きければ”特異的に似ている”かということについては、一応無相関検定のp値を出すようにしてますが、サンプル数(この場合20)が小さいこともあり、殆ど全ての組み合わせで無相関であるとする帰無仮説が棄却されやすくなってしまうため、この値はあまり信用出来ません。なので今回については、注目している配列と他の配列との様々な組み合わせで順位相関係数の大小を比べるしかありません。

プログラムは以下に置いておきますので、万が一御入り用なら使ってください。
(さらにもし万が一研究室メンバー以外が御入り用なら僕に連絡を)
https://sites.google.com/site/memwiki/tips/puroguramingu-kankei/product

使い方は

1、Perl, R,EMBOSSの使えるUNIX環境を用意しておく。
2、ファイルをダウンロードする。
3、コマンドラインで以下のコマンドを打つ。
% perl freqcheck.pl [アミノ酸配列データのファイル名]
(*このプログラムはsequentialなPHYLIPファイルしか読み込めません)
4、プログラムがスピアマンの順位相関係数あるいはケンドールの順位相関係数どちらを使うか聞いてくるので、名前を入力する。
5、freqcheck.plと同じディレクトリに結果のファイルとしてcorrelation.txtが出力されるので、これを見る。


今回のコーディングでは支援BGMとして幽霊楽団に活躍してもらいました。やっぱZ●N曲は偉大だ。

外国人学振PD審査結果公開

現在Dalhousie大の博士課程に在籍、もうすぐThesis defenseをする(はず)のAロンくんが外国人学振PDに合格した模様。顔本で本人のstatus updateから知った。これで休みはTXに乗ってアキバにいけるじゃん。

Halifax滞在期間中も、「もしJSPSだめだったら、ほかのfellowshipはあるか?」と聞かれてたのでホッとした。そんなfellowshipなかなか無いしさ。

時間どおりにdefenseしてほしい。とにかく彼は、真黒ジェンから返ってきた3種類のillumina dataがクロスコンタミネーションしてる問題を解決せねばdefenseできんからな~ 真黒ジェン、やらかしちゃったのかな?

カナダ滞在のレポートは中途半端に終わったが、CGEBでのトークも無難に済ませた(と思う)。とにかく滞在期間が短く、色々と日程が詰まっていたが充実していたことをここに記す。詳細は面倒なのでブログには書かない。

2011年8月17日水曜日

守谷へサイクリング

一昨日の夕方~夜に守谷へ行って来た。

チャリで(一応クロスバイクだが)。

理由は特にない。ただ昼間にオフィスで今日は守谷まで行くつもりだとU-ki.Yに軽い気持ちで話していたら、「ならラコステってラーメン屋に行って来て」という指令が下ったので、可能な限りラーメンは食べるつもりだった。

一応守谷までの道筋を調べたところ、408号から20km強程の距離だったので、これなら1時間30分くらいで到着できるだろうとたかをくくって出発した。それが不幸の始まりだった。

道に迷ったのだ。後から調べると方角的にはそれほど間違っていなかったのだが、そんなことは知る由も無い。それでも勘を頼りに走り続けたため、ますますドツボに嵌っていった。ふと目線を上げると、遠くに見えたのは打ち上げ花火。冷静になってコンビニに入り、ロードマップを立ち読みしてルートを修正した。
なんとかTX守谷駅まで到着できたが、この時点で出発から2時間近くが経過していた。その後は出発前に印刷しておいた守谷駅~ラコステまでの地図とU-ki.Yからの電話からの指示に従ってペダルを漕いでいた。そしてようやく辿り着いた旅の終着点。そこで僕が目にしたものは・・・!

真っ暗なお店と定休日の看板。

そりゃお盆だしね。涙を呑んで帰宅することに。帰り道でもまたしても道を迷い、帰路から起動していたau Ran & Walkは自宅までに40km超の距離をカウントしていた。

総走行距離は70kmに届いてしまう気がする。自転車に乗っていた時間は4時間半余り。たかだか守谷までを往復しただけなのに・・・

帰宅後は太腿がヤバイくらい熱を放っていたので、冷えピタを貼って就寝した。お陰で筋肉痛にはならなかったが、翌朝も疲れが抜けきらず、ラボにも行かないで一日中ダラダラ過ごした。

また挑戦してもいいが、今度はちゃんと現在地を把握できるものが欲しい。あと、サイクルコンピューターも。ビンディングペダルとシューズとクリートがあればもっと捗りそうだけど、ちょっとお高いので保留中。

Rのバッチモード

source("hogehoge")でインストールした関数をバッチモードで使おうと、

% R --vanilla --save <commandfile>outputfile

と打ったら「そんな関数はございません」と怒られた。

そんで--vanillaを消したら上手く行った。

--vanillaは'--no-save', '--no-restore', 'no-site-file', '--no-init-file', 'no-environ'を併せたものらしいので、no-environあたりに問題があるのかな?

2011年8月16日火曜日

種間(配列データ間)のアミノ酸頻度の類似性の検証

要はある種とある種(あるOTUとあるOTU)のアミノ酸配列データについて、そのアミノ酸頻度のパターン(20種のアミノ酸頻度の大小関係)に類似性があるか否かを調べるにはどうすればいいかということである。

Tree-Puzzleとかでやられるχ二乗検定は、データ全体から推定された期待値と、各配列データにおける各アミノ酸頻度の値とにどれだけズレがあるかをもとに統計量を計算するため、「明らかに期待値と異なるアミノ酸頻度パターンをもつ種」を検出することは出来るが、どの種とどの種のアミノ酸頻度パターンがどれだけ似ているかということは当然のことながら検証できない。

この、「ある種とある種でアミノ酸頻度パターンが似ているかどうかを検証する」必要が出てきたため、大ボスにも相談して考えてみた。

とりあえず、各アミノ酸の頻度を確率変数としてみた場合、これらの変数はまず正規分布に従わないし、連続的な値でもないため、ピアソンの相関係数は適用できない。


それで(途中あった議論云々をすっとばすと)、結論としては、スピアマンの順位相関係数あるいはケンドールの順位相関係数を適応すればいいのではなかろうかという結論に至った。

この二つはノンパラメトリックな指標であるため、変数の確率分布を想定する必要はない。また、変数を数値的に取る必要がなく、順位だけあればいいので、離散的な値であるアミノ酸頻度を扱っても問題はない。

ただ、この方法を試した場合、「順位に強い相関がある」種同士で、「アミノ酸頻度そのものの値に相関があるかどうか」までは分からない。対象となっているのはあくまで順位であるため。しかしながら、今回自分が行う検証についてはその点を考慮する必要はないため、ここではまだ考えない。


ちなみに、順位相関係数を計算したいなら、Rのパッケージとしてもあるし、web上で計算できるものもある。(以下参照)

http://aoki2.si.gunma-u.ac.jp/R/rank-cor.html
http://www.gen-info.osaka-u.ac.jp/MEPHAS/spea.html

2011年8月15日月曜日

64bit用のディストロ

やっぱうぶんつよりはSUSEとかの方が相性いいのかなあ。64bitうぶんつだとseaviewとかtreeviewの動作や表示がおかしくなるし、ファイルマネージャーはたまに自殺するし。

ということを双子をいじくる度に思う。データ採りが一段落したら魏怒羅の方のディストロを変えるか。


デスクのPeggyの方はDebianで満足してるんですけどねー。でも今度新しいPC買ったらarchにしたいなあと画策中。ちょっと日本語化やフォントなどの環境整備に手間取りそうだけど・・・

2011年8月14日日曜日

オーマイガッ

実験室に来たはいいが、肝心のスクリプトや解析用のファイル一式をdropboxにあげるの忘れてた。

くぁwせdrftgyふじこlp

自宅にトンボ帰り。。。ひ〜

筑波でお盆(初)

今年は九月初めの統計学関連学会連合大会に合わせて帰省する予定なので、お盆は筑波で過ごす。

学部生の頃はこの時期はインカレに参加した後実家に帰っていたし、研究室に入ってからもお盆には必ず帰省するようにしていたので、筑波で盆を過ごすのはこれが初めてである。

といっても、これといってすることもなく、外も暑いので基本的に家に引きこもって動画見たり仕事したりする。あとは気が向いたらプールに泳ぎに行ったり、ランニングしたり、積んでいたSTGを攻略したり。

(余談だがパターン組みを基本とするSTGは頭使うのと練習あるのみの世界なのでクリアするとその分凄く嬉しい。まるで試合に勝ったみたい。KIAI避けもそれはそれで楽しいのだが・・・。波紋を残機0ボム0の状態で乗りきったり、ノーコンクリア目前の反魂蝶を根性避けしたりするときには脳汁出まくってた。反魂蝶はnormalだけど)


そんな感じで、まったりと好きなことをやりながら、とりあえずは帰省前に取るべきデータを取って、出すべき原稿を出すことを短期目標としてやっていく。今年は秋口から研究以外のことでかなり忙しくなるので、手持ちの2つのテーマについて、今のうちに取れるデータは纏めておきたいなあ。


そして、ちょうど今一つ目のテーマまのデータ取りのためのスクリプトが出来上がったので、双子に投入しに実験室へGOする。

T細胞改変で末期の白血病患者が全快

APFの記事より引用

患者のT細胞に遺伝子改変を施し、その攻撃性を高めることでがん細胞をほぼ全滅させる。
癌細胞が死滅した患者のうち、その後一年に渡って癌細胞の増加が見られず、体が防御体勢を維持している例も確認された。

まだ臨床段階ですが、素晴らしい結果ですね。薬剤治療から遺伝子治療へ、時代がどんどん躍動しているのを感じます。人間が寿命以外の不治の病すら克服する未来も案外近いのかもしれません。

これが実用化されるのは何十年後か、自分がヤバいことになった時までにはぜひとも一般化されていてほしいものです。

元論文はこちら

http://stm.sciencemag.org/content/3/95/95ra73.abstract
http://www.nejm.org/doi/full/10.1056/NEJMoa1103849?query=featured_home

2011年8月13日土曜日

パンスペルミア説再燃か論文

南極から採取した隕石を調べると、アデニン、グアニンと生体内の筋肉組織などに見られるヒポキサンチンとキサンチンが見つかった。

既存の(地球上の)生物による汚染のきわめて少ないと考えられる南極で見つかった隕石からこのような生物の基本的な構成要素が発見されたということは、「地球上の生命の起源となった物質は宇宙から飛来した隕石に付着した物であった」というパンスペルミア説が正しい!?

・・・という何とも香ばしい論文がPNASに掲載されました。

http://www.pnas.org/content/early/2011/08/10/1106493108.full.pdf+html?with-ds=yes


研究を行ったのは”あの”NASAです。

これからこの論文の真偽について、NASAがまたやらかしたのか、それとも生命の起源に関する我々の知見を一歩先に進める時が来たのか、という論争が勃発すると思いますが、『今の』あるいは『隕石が衝突した当時から今までの』地球環境から汚染を受けた可能性は究極的には排除出来ないだろうから、結局の所この問題は検証不可なんじゃないかと思います。
なので、「可能性としてはあり得る」を盾にして、言ったもん勝ちになっちゃうのではないかと。

といっても、ちゃんと読まないことには眉唾物かどうかは分かりませんけどね・・・

2011年8月12日金曜日

放散虫論文正式版

JAMSTECのI谷さんやT下さんらとの共同研究の論文の正式版がMarine Micropaleontologyのオンライン上にアップされました。

MM(というかElsevier?)の論文の体裁は結構自分の好みだったりします。
掲載された後の論文の体裁がどうとかいうのは論文を読むor投稿することに関して本質的に重要なことではないですが(自分の作ったレイアウトを編集者が勝手に改悪しちゃったりという場合は除く)、自分が書いたり、自分が関わっていたりした論文が自分の好みの体裁で掲載されると特に嬉しいと思います。

ちなみに、僕はJMEとかStatictics and Computingとかの体裁が一番好きです(Springer系は雑誌ごとに違いが見えやすいが、その中でも特にこれら)。全体的にスペース多めでゆったりしてるし、無駄な飾りもなく論文っぽい感じを出してるし、タイトルや各項目のレイアウト、フォントも自分の嗜好に沿っています。

逆に、近年のMBEの体裁はフォントがオサレ過ぎて好じゃなく、Syst. Biolなんかも行間が狭すぎて読みづらいので好きではありません。雑誌としての価値はとても高いんですけどね。

2011年8月11日木曜日

遅くなりました



改めてまして。

みなさん(D308, D508, & KKK)、盛大なbirthday partyをどうもありがとうございました。

人生の折り返し地点である30歳を皆と過ごせることを光栄に思います。これからも、こんな(←)三十路をかまってやってください。




毎朝、そして帰る前には必ずYouTube(限定公開)と色紙を見て自分を励まし、仕事中うとうとしだしたら「サル」で休憩。



チョッパーとつみネコと花で癒され、













心が折れそうになったら「薬」を飲む。















時間ができたら、脳の老化を食い止めるために「色」を分ける。
そんな一年になりそうです。

ちなみに30代の目標は、「見た目も中身も20代」です。

2011年8月10日水曜日

イメージが大事

数式を理解するには数式を見て何らかのイメージを作り上げることが大事。
どういうイメージなのかと聞かれると人に説明するのがものすごく難しいのであるが、ともかく二次元であれ三次元であれもっと抽象的なものであれ、そして人それぞれで変わってもいいので、数式から何らかのイメージを想像し、「あ、こういうことやってんのね」とピンとくればいい。

自分は大体数学を勉強するときにはそういったイメージを作り上げようとするし、逆にそれが出来なければまったく理解することが出来ない。もっといえば、数式からどんなイメージを作り上げるかが数学の楽しみの一つであるとも思うし、それが出来ないと数学が面白く感じられないとも思う。

・・・と、今日数理統計学の教科書を読んでいて思った。
統計数理学は比較的イメージを作りやすい分野なので理解しやすいし自分は好きだ。
確率空間とか標本空間とか想像しやすいもんね。だからAU,SHなどの仮設検定の公式とかも自分の作った「こんな感じ」なイメージを基に数式を当てはめることが出来、理解しやすい。

まあ文章に表そうとするとこのように何ら具体的なことが書けないんだけども。

そしてうちの大ボスによれば「統計学は数学じゃなくて算数」らしいんだけども。

でも「『イメージ沸かないからこの数式ワカンネ』という数学者の友達がいる」というのは同じく大ボスから聞いた話である。

一方で、線形代数とか微分方程式とかは幾分イメージが作りにくく、従って理解しがたい。
線形代数はまだ行列という具体的に形があるものを使っているのでやりやすいが、ベクトル空間はまだイメージしづらい。

微分方程式にいたってはそもそもイメージを作ることが不可能なので、数式のどの部分で何をやってるのかを理解することが未だに困難である。

なのでこの二つの分野については、まだあまり面白みを感じられない(必要だとは思うが)。

う~ん、試しに纏めてみようと書いてみたが、全然纏まらんな。
とりあえず、「数式には何らかのイメージが伴うもの」というところかな?

2011年8月9日火曜日

本s


ヤ○ロに頼んでいた本が漸く納品された。
海外発行の書籍はどうも納入に時間がかかるらしい。

上の本はどれも分子系統学、進化生物学のための統計数理学的理論や、バイオインフォマティックスのための計算科学(アルゴリズム)やプログラミングについての参考資料。どれもここ2,3年の間に発行された物で(左上のZYの本は除く)、参考書としては最新の物といって差し支えないと思う。

こういう分野の資料は和製本ではあまりいいものがなく、かといって当該分野の包括的な知識を論文のみでカバーするというのも中々難しいので、このような教本があると大変助かる。

全編揃って結構なページ数であるので完読するのも大変だが、時間を見つけて少しずつ読んでいこうと思う。

2011年8月7日日曜日

ベビーシッター

昨日は仕事。
もちろん実験やら論文書きやらという類のものではない。

ボスのキッズに遊んでもらう with Mっちゃん、という仕事である。
ボスはカナダ、ボスの奥様はお仕事で外出、ということでラボの年長者二人が御指名となった。
上の長女はすでに小学〇年生だし、下の長男は幼稚園の年長さん。
しかもこれまでにも何回も遊んだことがあるので、たいして手はかからない。

昨日は昼ごろボスの家へお邪魔して昼ご飯を御馳走になった。ここで出てきたジャガイモを使った一品が気に入った。作り方を教えてもらったので、後で早速作ってみようと思う。
想定外だったのは、ボスの奥様のお母様が買っておられる駄犬(ボス談)コハルに吠えられまくったこと。
Mっちゃんも同じような憂き目に会い、僕も咬む真似をされたり、コハル嬢は相当にお怒りのご様子であった。おやつ+散歩後は顔をなめに来るくらい仲良くなった(なんて現金な!!!)。



食事の後は

カードゲーム under 長男's rules (カードが気に入らないと山札を自由にシャッフル、突然終了、etc.)を経たのち、

エキスポ〇ンターで

・プラネタリウム(を見ながらkamiとMっちゃんは爆睡)
・高分子ポリマー(いわゆるおむつの吸水材)を使った芳香剤作り by 長女
・水笛作成 by 長男

という感じで1時間を過ごした。
おやつをはさんで最後にキッズがゲームセンターに行きたがったので、メダルゲームをしに、D〇〇〇 T〇〇〇へ。
さすがに長女はメダルを元手の2倍まで増やし、ご機嫌。
長男は摩って摩って摩りまくったが、ご機嫌。


ここで本日最大の難関。
長女とともに、儲けたメダルをdepositしようとしたら、店員さんから

「16歳未満の方は保護者の方にお願いします。」

とのこと。今思えば、「いや~、知人の子供なんですがどうしましょう?」と言えばよかったのだが、その時なぜか

「あの~、僕たち血がつながっていなくて、、、本当の父親じゃないとダメですか?」

という誤解を生む返事をしてしまった。このとき店員さんがどういう意味に受け取ったかは火を見るより明らかで、店長が出てきて詳しい説明を受けた。。。大変申し訳ない、という感がにじみ出ていた表情が忘れられない。


2011年8月5日金曜日

Halifax、2日目レポート

今日は第3日目である。気温は16℃くらい。室内は20℃。

一昨日の晩にHalifaxに到着し、昨日(第2日目)をずっと大学で過ごした。とりあえず天気は雨か曇り、今朝は青空が見えたが、今はまた曇っている。

いきなり合同ラボミーティング、MティンとAロンの発表を聞いた。JMA研の○山君とは挨拶したが、T郎君の姿が見えない、とおもったら寝坊したとのこと。ごめんT郎君、チクっちゃった。


昼飯後はAJR研の学生・ポスドクといろいろdiscussionし、4時からまたトーク。DNA barcodingの話だったが、あまりのつまらなさに眠気に襲われ、後半は覚えていない。ただ参加したメンバーはくちぐちに「あれはひどかった」とのこと。

AJR家に戻り、Uデニのカレーを夕食に頂いた。AGBSとGナも参加し、たのしくお食事をした。これからも彼らとはずっと友達なんだろうなぁ~と考えていたら、なんだかホッコリしてしまった。やはりHalifaxは第2の故郷である。

今朝は5時半くらいに目が覚め、完全時差ボケ。今日は11時からトークがあるので、スライドのチェックとかして過ごした。朝食前に家族とスカイプで話した。スカイプしながらiPod touchのカメラでAJR家ツアーをしたり。そんでもって、いまラボなう。

今晩はAJR家でBBQパーティー。○山君もT郎君も来るようなので、楽しみだ~!とりあえずトークに集中する。

AICS Summer School 最終日

内容が濃すぎて長く感じた本サマースクールも終わりを迎えました。

今日の講義ではOpenMPに的を絞った並列化の話がありました。

OpenMPはスレッド間でメモリを共有するため、並列化をする際はデータ依存性(メモリへの書き込みと参照が同時に発生すること)に注意する必要があります。

アルゴリズムの中でデータ依存性が生じる場合は、データの並び替え(オーダリング)を行い、依存性を無くさなければいけません。また、データオーダリングは並列化に必須なだけでなく、前処理などでのFill-inを少なくすることで、反復法での反復数を減少させる効果もあります。

データオーダリングの方法としては、カラーリング法やRCM,Cyclic Multicoloringなどを学びました。なお、OpenMPは共有メモリ型システムで動かすことを前提としてますが、NUMA構造をとる計算機では、numactrlの設定を行うことで、ローカルメモリに各スレッドの要求するデータを分散させて載せることが出来ます。その際、First-touchと呼ばれる設定を行うことで、スレッドごとに、「そのスレッドを担当するコアの近くにあるローカルメモリ」にスレッドの要求するデータを載せることが出来ます。これは1ノード(T2Kだと1ノード=4ソケット=16コア)の内部で出来ることで、この技術はHybridプログラミングに応用することが出来ます。

また、ローカルメモリに分散させたデータについて、スレッドごとに連続アクセス出来るよう、データの再配置を行うことも最適化に有効です。

大体このような内容の講義が行われましたが、MPIの時も言われたように、とにかく並列化するときにはスレッド(あるいはプロセス)でデータをどのように分割するかということが極めて重要であるということが、このセミナーでのキモだったと思います。


さて、これで5日間に渡る並列プログラミングの講習が終わったわけですが、講義自体が駆け足気味だったことや、そもそも自分のバックグラウンドが皆無に等しいため、まだほんの「さわり」の部分が理解できたに過ぎないと思います。

幸い、本サマースクールの内容は普通情報科学の大学院生が学ぶレベルのものらしいので、DualDegreeに合格して、大学院でもさらに自分の理解を深めていくことが出来るようにしたいです。そのためにも、プログラミング言語(特にCとFortran)の基礎や、数値計算のアルゴリズム(特に微分方程式の解法や行列計算のテクニック)をしっかり自分で補完しておかねばなりませんね。

最後に、参加者の集合写真と、(今はまだ)形だけの修了証を載せて、本サマースクールの体験記を終わりにしたいと思います。今日はこのまま筑波へ帰りますが、帰るのは11時くらいになりそうですね。ミッドナイトつくばにベロベロに酔ったおっさんと一緒に乗ることは避けたいなあ・・・


みんな

8月5日、SMBEで自分の英語力と今の分野の知識のなさにショックを受けて立ち直れていないM−たんです。
8月5日、今朝の天気予報では雨の予報が出ていましたが、晴れていてテンションがあがっているM−たんです。雨より晴れの方がいいですよね!!
8月5日、、、SMBE以来ラボがフルメンバーにならないです・・・淋しいです・・・
早くみんな帰ってきて下さい!!

AICS Summer School 4日目

(なんもしてないけど時間差でファビコンが変わった。なんでやろ)

ホテルの近くのダイエーにTaqさんの紹介してたポテトチップス関西だしじょうゆがあったので、買って夕食後に食べました。普通に美味しかっです。

ちなみにポテトチップスには九州しょうゆ味もありますが、それに味が似てました。まあしょうゆですしね。関東でも九州しょうゆは希に見かけますがこちらも美味しいので、食べたことない人はぜひ試してみて下さい。

サマースクールの方は、今日も引き続き熱伝導方程式の有限体積法(FVM)のプログラムを例にした講義がありました。今日は実際にプログラムを書くというよりは、コードの中身や基本的な数値計算のアルゴリズムに関する座学が多かったです。実習でやったのは、事前に用意された並列処理FVMプログラムを使い、パフォーマンスを計測するというようなことだけでした。

座学中心というのはやはり今の自分にはきついです。熱伝導方程式のような微分方程式を解くということには殆ど馴染みがないので、数値計算アルゴリズム全体の流れというものがそもそも掴めない。従って、コードの中身を説明され、「ね、簡単でしょ?」と言われても全然理解が及ばない。毎日夕食後は寝るまでこうやってブログをメモ代わりにして復習をやっていますが、いかんせんバックグラウンドがなさ過ぎますね。このセミナーが終わった後も、数値計算の基礎を一からやり直す必要性を強く感じました。

とりあえず今回使ったプログラムは三次元メッシュでの定常状態における温度勾配を求めるための物であるから、時間軸は必要ないということ。微分方程式を離散化した式は最終的にAx=bの形にすることが出来ること。さらにこの行列ベクトル積では疎行列をCRSすることで計算を効率化することが出来ること。その後の計算は共役勾配法を使うこと。共役勾配法の中で、収束を速くするために"前処理"を行うこと。前処理には点ヤコビ、(不)完全LU分解、(不)完全修正コレスキー分解を用いること。というのが概要でしょうか。


今日の講義では、FVMのアルゴリズムの詳細に加え、このプログラムをMPI並列化する際、MPI処理をなるべく隠蔽するためのツールとしてHPC-MWやppOpen-HPCといった大規模計算コード開発基盤が紹介されました。これらのツールは、簡単にいえば自分の作った逐次処理プログラムを投げると、どの計算システムでも動くような並列計算処理プログラムにチューニングして返してくれるものです。この中で、MPI処理は全てライブラリ化され、コードの中でそのライブラリを一文で呼び出してやればいいだけになり、プログラマがいちいち数多くのMPI関数をコード中に組み込んでいく必要がなくなるのです。HPC-MWはチューニングできるプログラムが限られますが、現在プロジェクト進行中のppOpen-HPCはより広範囲の分野のプログラム、そしてより多くのハードウェアに対応した開発環境を目指しています。あと数年後には、誰でも簡単に(MPIの基礎さえ分かっていれば)並列処理プログラムを作れるようになるかもしれません。

今日の実習では、HPC-MWでチューニングされたFVMを使い、データサイズやプロセス数、データ分割の手法を変えてそのパフォーマンスを調べました。このようなパフォーマンス測定手法には、Strong Scaling(問題サイズは変えないでプロセス数を変える)とWeak Scaling(個々のプロセスが担当する問題サイズは変えず全体の問題サイズとプロセス数を大きくする)があるそうです。一般的にはStrong Scalingが使われるようですね。実習では、全体の問題サイズが小さいと、例えプロセス数が4から8になっても、通信のオーバヘッドなどにより、全体の計算時間が逆に長くなるという現象も確認できました。

あとは、MPIでの通信の仕方なども学びました。現在のMPIの通信プロトコルにはEagerとRendezvous(タグの情報などをコントロール情報として先に送信・受信する)があり、データサイズによって使い分けがされているようです。そして、通信のオーバヘッドを小さくするためには、どちらのプロトコルを使うのか、またSend(I_Send)やRecv(I_Recv)をコードの中のどのタイミングで行い、どこでWaitallするのかといったことが大切です。

これに関連し、I_Sendでは送信したあとにCPUに別の逐次処理をさせることも可能ですが、実際にはCPUはWaitallするためにリソースを消費しているのであり、(一見暇そうにしてるから)新たな処理をさせようとするのは却ってパフォーマンスの低下を招くそうです。

とりあえずは、こんなところが今日のまとめ。

明日は、OpenMPによる並列化、オーダリング、Hybridプログラミングを学びます。それが終わった後は、その足で帰筑です。

2011年8月4日木曜日

みゆき


朝来て株の調子をうかがって帰ってきたら…

鳥居があった。あれ?ここ神社だったっけ?
komatsu様を祭神にした神社ができた瞬間である。

大阪にはう~まいもんがいっぱいあるんやで~~

こんにちわ!! 天スタ、テナーサックスのTaqです!
とバンドのブログに書き込む時のノリで書いてみました。

タイトルには、大阪で大流行の「大阪うまいもんの歌」をお送りしました。
大阪では大流行!!(ケンミンショー情報)
今日つくばっくするのに、少し時間あったので更新。関西のうまいもんを紹介☆

この前、つぶやいたら、関東在住関西人の友達から反響が大きかったのが、ポテチ「関西だし醤油」
これ関東ではあんまり売ってないです。これめちゃくちゃうまいんよ。関西に来た時はぜひ!!

次は、ポールウインナー。
ねーちゃん、ちょっと見てってんか。これ魚肉ソーセージと違いまっせ。そこらの魚肉ソーと一緒にしてもーたら困りまっせ。よー見てみなはれ。ウインナーって書いてまっしゃろ?魚肉やのーて、豚肉使ってますねんで。なんで関東では売ってないんかって?しらんがな。でも、関ヶ原は越えられんちゅーて伊東ちゃんがゆ~てたな。伊東ちゃん?伊東ハムの事やがな。このウインナー、うまいんなー。なんつって。(一同ズコーッ)激うまです。チャーハンには必ず入ってました。関西で赤セロファンと言えばこのウインナー!関東に行ってから、コンビニで赤セロファン買ってかじった瞬間に吐き出したのを覚えてます。まずいとかじゃなくて、コーラと思って飲んだらコーヒーだってびっくりしたって感じです。

最後はこれ!!












「551のある時~~。無い時~~」のCMでおなじみの551。夏はアイスキャンデーを売り、冬は豚まん。
めーっちゃおいしいんで、大阪に来た時はぜひ!!大阪駅、京都駅にも売ってます。
大阪でお土産と言えば、551。おばあちゃんちに集まると、何人かが必ずこの箱をぶら下げてやってきます。というか、おばあちゃん自体がこの箱とセットのような気がします。ぶら下げてる率高い。

あと、ジョージアのカフェオレとか、色々あるけど、こんな感じで。

てな感じで、ツクバックの用意します!!

お墓参り

くそ暑い中お早うございます。
渦鞭レッドことU-ki.Yです。


『葉月』でも書きましたが実家によったついでにお墓参りをしてきました。
東京のお盆は元来は7月15日及びその周辺の土日とされているので、それを兼ねてという感じです。
なんか知らないですけどお墓参りって好きなんです。

神社や寺を巡って景観や雰囲気を楽しむというわけではないのですが、それとは違った別の感覚でどこかしら心の休息を感じます。

僕は明確に宗教に入っているわけではないし、変な宗教観はあるかもしれないですけど。あんまり、死後の世界やら生まれ変わりやらも分かんないですけど、ご先祖様があってこそ今の自分が存在しうるのは事実だと思うんですね。縁があってここにいるのだから、少なくともその基盤を構築してきてくれた方々に感謝しなきゃいけないと感じます。少なくともこの世いらっしゃらない方々には直接いえるわけではないので、せめても今いらっしゃるところを奇麗にして年に何度か報告に行ってあげると良いんじゃないかなと思います。じっさいにはお墓をいくら奇麗にしたって、いくらお参りしたって一歩下がってみればその行為自体は亡くなってしまった人たちは物理的には届いてないでしょう。ご先祖様を敬っていないように感じますが自分の心の持ち様とかは違っているような気がします。

とはいえ、この現世で僕が生きていられるのも、研究の一端を行えているのも、全てはいろんな縁とご先祖様がいらしたから。自分の実力で勝ち取った、そして自力でやって行っている、他人なんて干渉してないと言う人もいるけど、そんなことはないと思います。ですから、いろんな縁に感謝し、ご先祖様に感謝するべきなんだと。だからこそ、なるべくお盆とかその前後とか、お正月には田舎に帰ってお墓参りしてあげてください。

なんか宗教的な説教になってしまってすいません(笑)

メモ:fscanfの使い方

これは異なるファイル(a2.*)から異なるサイズの配列を読み込むためのコードだが、この中で引っかかったのがfscanfの使い方である。

fscanf(読み込むファイルポインタ, 書式[変数の型?], 格納する変数)みたいな使い方をする。
書式に%dを指定すればファイルの中のint型の要素を読み込む。%lfを指定すればdouble型の要素を読み込む。


#include <mpi.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <assert.h>

int main(int argc, char **argv){
 int i;
 int PeTot, MyRank;
 MPI_Comm SolverComm;
 double *vec, *vec2, *vecg;
 int *Count, *CountIndex;
 int num;
 double sum0, sum;
 char filename[80];
 FILE *fp;

 MPI_Init(&argc, &argv);
 MPI_Comm_size(MPI_COMM_WORLD, &PeTot);
 MPI_Comm_rank(MPI_COMM_WORLD, &MyRank);

 sprintf(filename, "a2.%d", MyRank);
 fp = fopen(filename, "r");
 assert(fp != NULL);

 fscanf(fp, "%d", &num);
 vec = malloc(num * sizeof(double));
 for(i=0;i<num;i++){
  fscanf(fp, "%lf", &vec[i]);
 }

 for(i=0;i<num;i++){
  printf(" %5d%5d%5d%10.0f\n", MyRank, i+1, num, vec[i]);
 }
 printf("\n");

 Count = calloc(PeTot, sizeof(int));
 CountIndex = calloc(PeTot+1, sizeof(int));
 MPI_Allgather(&num, 1, MPI_INT, Count, 1, MPI_INT, MPI_COMM_WORLD);

 MPI_Finalize();

 return 0;
}

メモ:プロセス間でのデータ交換

長さは同じだがそれぞれの要素が違う二つのベクトルを作り、二つのMPIプロセスに各々のベクトルを分配する。その後、ベクトルの一部分(VECだと頭から11要素の所から25要素分、VECtempだと頭から11要素分)ををプロセス間で入れ替えるプログラム。

#include <stdio.h>
#include <stdlib.h>
#include "mpi.h"
int main(int argc, char **argv){
 int neib, i;
 int MyRank, PeTot;
        double VEC[35], VECtemp[35];
        
        int start_send, length_send, start_recv, length_recv;

 MPI_Status *StatSend, *StatRecv;
 MPI_Request *RequestSend, *RequestRecv;

 MPI_Init(&argc, &argv);
 MPI_Comm_size(MPI_COMM_WORLD, &PeTot);
 MPI_Comm_rank(MPI_COMM_WORLD, &MyRank);

 StatSend = malloc(sizeof(MPI_Status) * 1);
 StatRecv = malloc(sizeof(MPI_Status) * 1);
 RequestSend = malloc(sizeof(MPI_Request) * 1);
 RequestRecv = malloc(sizeof(MPI_Request) * 1);

 if(MyRank == 0) {
             neib= 1; 
             start_send=0;
             length_send=11;
             start_recv=length_send+1;
             length_recv=25;
             for (i=0;i<=35;i++){
                  VEC[i] = 100 + i;
            }
        }
        if(MyRank == 1) {
             neib= 0; 
             start_send=0;
             length_send=25;
             start_recv=length_send+1;
             length_recv=11;
             for (i=0;i<=35;i++){
                  VEC[i] = 200 + i;
             }
        }
        for (i=0;i<=35;i++){
      printf("%s%2d%5d%8.0f\n", "### before", MyRank, i, VEC[i]);
        }

 MPI_Isend(&VEC[start_send], length_send, MPI_DOUBLE, neib, 0, 
                   MPI_COMM_WORLD, &RequestSend[0]);
 MPI_Irecv(&VEC[start_recv], length_recv, MPI_DOUBLE, neib, 0, 
                   MPI_COMM_WORLD, &RequestRecv[0]);
        MPI_Waitall(1, RequestRecv, StatRecv);
        MPI_Waitall(1, RequestSend, StatSend);

        for (i=0;i<=35;i++){
             printf("%s%2d%5d%8.0f\n", "### after", MyRank, i, VEC[i]);
 }
 MPI_Finalize();
 return 0;
}

AICS Summer School 3日目

9時開始なのに、起きたら8時半で危うく遅刻しそうになった3日目。

そして講義の初っぱなからこんな↓数式が出てきて僕のCPUが熱暴走を起こしました。




これは一次元熱伝導方程式を有限体積法による空間離散化で求める際の熱流束に関するつりあい式です(詳しくは分かりませんw)第一項では要素i(色つき五角形)とそれに隣り合わせの要素kでどのように熱が伝わっていくかを示す。第二項の温度境界面は図中T(iBe)の面が空気や水に触れていると仮定し、面で一様に温度勾配があり、それが要素iの中心に伝わっていく様子を示す。第三項はq(id)の面で温度勾配が一様でないことを仮定する。第四項は要素iの要素体積が発熱する様子を示す。

この式が要素1,2,..i,...N分だけ並んでいる。

んでこの式を求めるためのプログラムがあり、その解説がまず行われました。
が、まず理論の背景が分からん。講義資料が膨大。それを駆け足で説明。しかも言語が説明されるのはFortranで作られたプログラム(Cで書かれたコードのファイルもあるが)。今日は何度も置いて行かれそうになりながらついていくのがやっとでした。

有限体積法では内部熱伝導(要素間のコネクティビティ)、ディリクレ境界条件(表面温度固定)、ノイマン境界条件(表面熱流束)のためのパラメタを持つメッシュデータを読み込み、上記方程式の各項を要素iについて計算します。

この方程式は行列ベクトル計算と見なすことが出来ますが、このままではコネクティビティのパラメタから計算される行列が疎行列であり(各要素は隣り合った要素としか関係を持たないため)、無駄なデータを多く持つことになり計算の効率が悪くなります。

そこで、上記の式を変形し、以下のようにします。



こうすると、先ほどの疎行列の対角成分と非零非対角成分しか使わないで済むようになるので、要素間コネクティビティのパラメタからなる行列より、CRS(Compressed Row Strage)法を使って対角成分と非零非対角成分のデータのみ抽出することで、計算の効率化を図ります。あとは変形後の方程式を解くだけですが、これは要素1~NでみるとAx=bの形をしているので(AがCRSした行列、xは各要素の温度を表すベクトルTに相当、bは右辺)、反復法(共役勾配法)によるソルバーを用います。

共役勾配法ソルバーについてはまだコードを概観しただけでちゃんと理解が及んではいない。

そして、このプログラムを並列化するための準備として、午後は局所分散データ構造・領域分割について学びました。
SPMDの考え方から、MPIでは各プロセスで実行される命令は同じだが、扱うデータが違うようにする必要があります。

このとき、有限体積法プログラムなどでは隣り合わせの要素のパラメータを使った計算があるので、プロセスによっては他のプロセスの持つデータを貰ってこなければいけないことがあります。従って、各プロセスの持つデータはオーバーラップ付きの局所分散データ構造をとる必要があり、どこが内点で、どこが外点(他のプロセスからの受信あるいは他のプロセスへの送信が必要な領域)で、どこが中間点であるかをプログラマがしっかりと理解することが不可欠です。

今回の講義では、より簡単な二次元配列データを分割し、3プロセスでオーバーラップ付き局所分散データを分担、外点を送受信するプログラムを実際に作りました。
この外点の送受信の場合、プロセス間通信のあり方としては、全てのプロセスが単純にsend,recvするだけでは昨日も書いたデットロックが生じてしまうので、非ブロック通信を行うためにMPI_Send,MPI_Recvの代わりにMPI_Isend,MPI_Irecv,MPI_Waitallを使う(この際通信識別子と状況オブジェクト配列をちゃんと定義すること)。

これには4時間ほど費やして座学演習を行いましたが、それほどに領域分割と局所分散データ構造の概念は並列処理で重要なものだそうです。


また、最後には「どのようにデータを分割すればいいか」を自動的に最適化するPartitioningツールとして、METISが紹介されました。

METISはメッシュデータだけでなく二次元行列の分割にも使えるし、フリーソフトで自前のプログラムにも組み込めるので、系統解析のソフトにも使えるかも知れません。ただ、系統解析にある計算で、データをどのように分割しているのか(例えば配列データをサイトごとに分割しているのか)が分からないと、このツールの有用性は分かりませんね。そもそも系統解析だと疎行列を使うのだろうか、それとも密行列を使うのだろうか・・・?

ちなみに、上記の有限体積法の計算結果では、下のような三次元メッシュでどのように熱が伝わっていくかを示す図が得られます。

2011年8月3日水曜日

学会その後

こんばんわ!!Taqです!!

と始めてみました。SMBE京都大会は終了しましたが、僕は今大阪にいます。早めのお盆の帰省を兼ねています。

1週間、地元のような京都に滞在し、実家に戻ったわけですが、今日僕はまた京都に行ってまいりました。
学振の書類でお世話になったO先生に挨拶に行ってまいりました。
前回は、バタバタしていてゆっくりと挨拶出来ぬまま筑波に帰ってしまったので、改めてお礼に行きました。お忙しい中、時間を取っていただいて昼から6時ごろまで色々話をしてきました。無事学振が通り、また来年もお世話になれるといいなと思います。

今回の学会では、観光地各地でオワター\(^o^)/を敢行することが出来ました。京都タワーでオワター\(^o^)/初日で何も終わってないんですけどね←
こんな写真を数枚撮ってまいりました。

学会では、ポスター発表だったのですが数多くの人が聞きに来てくれて、一生懸命説明をしました。海外の方も多く来てくれました。
今回はいつもと違って、プロティストや藻類、共生にあまり縁のない方が多く自分のポスターの作り方に対して反省しました。もっとイントロの部分をしっかりするべきだったと思いました。実際、説明で一番時間を費やしたのがイントロの部分でした。
聞いて下さる人達の立場に立って、見せ方を変えていく事の重要性をD3になった今更ながら痛感しました。
これからはもっと意識をして発表を作っていこうと思います。


PS. 発表の時に、首タオルはダメでしょう。忘れててそのまま発表してました・・・

ソースコードを綺麗に

テキストファイルからソースコード貼り付けると<>が消えたりHTMLのタグとのconflictでがうまく表示されなかったりするのでここを参照にした。

投稿スペースの幅が小さいので折り返しで見辛くなっているが、フォントサイズの変更は出来るのかな。

これでソースコードが貼り付けやすくなった。

さて、早寝早起きといいながらもうこんな時間。
明日に備えて寝よ。

メモ:C=A*B MPI

N*Nの行列計算C = A・Bを行うためのプログラムにMPIを組み込んだもの。

これは最終的に出来上がったプログラムだが、一つ前のステップとして、各MPIプロセスはA,Bの行列データの全てを持ち(N*Nのデータ)、それぞれのプロセスでそのデータの一部を使い、Cの別々の要素について計算を行うというものを作った。このプログラムでは、各プロセスの持つデータも分割するようにしている。勿論この方が無駄なデータを保持する必要が無く最適化されたプログラムである。

また、並列処理以外にも、行列積のプログラムではループ交換法やタイリング(ブロック化)法により、アルゴリズムを最適化する必要がある。ループ交換法では行列の積を内積形式にするか、外積形式にするか、中間積形式にするかで、言語により性能が違ってくる。このプログラムでは内積形式を使っているが、行方向のアクセスはC言語では連続メモリアクセスとなり、Fortranでは不連続アクセスとなる(列方向は反対)。タイリングの仕方も、一次元なのか、二次元なのか、サイクリックなのか否かで性能が変わる(データサイズや計算負荷のバランス、プロセス数によっても変わる)。

このプログラムでは各プロセスはAの[N/プロセス数]*[N]、Bの[N]*[N/プロセス数]のデータを持つので、各プロセスでCの[N/プロセス数]*[N]を計算するためには、通信を使ってBのデータを更新する必要がある。このプログラムではBのデータの更新のため、循環左シフト転送を実装している。ただこのアルゴリズムでMPI実装することを考えると、全てのプロセスが一斉にメッセージの送信と受信(MPI_Send,MPI_Recv)をすると送信バッファが永遠にクリアできず、デットロックが起きてしまう。そのため、プロセス番号を2で割る条件で、あるプロセスは最初に送信し受信、一方のプロセスは受信し送信するという風に通信をずらしている(タグ番号もずらすことが大事)。

ローカルな行列積では、Cの列方向の要素の場所をプロセスごとにずれるようにしなければ最終的な計算結果(N*Nの行列C)を得られないため、jstart変数を定義している。

--------------C=A*B-------------

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#include <mpi.h>

#define  N        128
#define  NPROCS   64

#define  DEBUG  1
#define  EPS    1.0e-18

double  A[N/NPROCS][N];
double  B[N][N/NPROCS];
double  C[N/NPROCS][N];

double  B_T[N][N/NPROCS];

int     myid, numprocs;

void MyMatMat(double [][], double [][], double [][], int); 

void main(int argc, char* argv[]) {

     double  t0, t1, t2, t_w;
     double  dc_inv, d_mflops;

     int     ierr;
     int     i, j;      
     int     iflag, iflag_t;

     ierr = MPI_Init(&argc, &argv);
     ierr = MPI_Comm_rank(MPI_COMM_WORLD, &myid);
     ierr = MPI_Comm_size(MPI_COMM_WORLD, &numprocs);

     /* matrix generation --------------------------*/
     if (DEBUG == 1) {
       for(j=0; j<N/NPROCS; j++) {
         for(i=0; i<N; i++) {
           A[j][i] = 1.0;
           C[j][i] = 0.0;
         }
       }
       for(j=0; j<N; j++) {
         for(i=0; i<N/NPROCS; i++) {
           B[j][i] = 1.0;
         }
       }

     } else {
       srand(myid);
       dc_inv = 1.0/(double)RAND_MAX;
 
      for(j=0; j<N/NPROCS; j++) {
         for(i=0; i<N; i++) {
           A[j][i] = rand()*dc_inv;
           C[j][i] = 0.0;
         }
       }
      for(j=0; j<N; j++) {
         for(i=0; i<N/NPROCS; i++) {
           B[j][i] = rand()*dc_inv;
         }
       }

     } /* end of matrix generation --------------------------*/

     /* Start of mat-vec routine ----------------------------*/
     ierr = MPI_Barrier(MPI_COMM_WORLD);
     t1 = MPI_Wtime();

     MyMatMat(C, A, B, N);

     ierr = MPI_Barrier(MPI_COMM_WORLD);
     t2 = MPI_Wtime();
     t0 =  t2 - t1; 
     ierr = MPI_Reduce(&t0, &t_w, 1, MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD);
     /* End of mat-vec routine --------------------------- */

     if (myid == 0) {

       printf("N  = %d \n",N);
       printf("Mat-Mat time  = %lf [sec.] \n",t_w);

       d_mflops = 2.0*(double)N*(double)N*(double)N/t_w;
       d_mflops = d_mflops * 1.0e-6;
       printf(" %lf [MFLOPS] \n", d_mflops);
     }

     if (DEBUG == 1) {
       /* Verification routine ----------------- */
       iflag = 0;
       for(j=0; j<N/NPROCS; j++) { 
         for(i=0; i<N; i++) { 
           if (fabs(C[j][i] - (double)N) > EPS) {
             printf(" Error! in ( %d , %d )-th argument in PE %d \n",j, i, myid);
             iflag = 1;
             exit(1);
           } 
         }
       }
       /* ------------------------------------- */

       MPI_Reduce(&iflag, &iflag_t, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD);
       if (myid == 0) {
         if (iflag_t == 0) printf(" OK! \n");
       }

     }

     ierr = MPI_Finalize();

     exit(0);
}

void MyMatMat(double C[N/NPROCS][N], 
              double A[N/NPROCS][N], double B[N][N/NPROCS], int n) 
{
     int  i, j, k, p, q;
     int  ib;
     int  ierr;
     int  iloop; 
     int  jstart; 
     int  isendPE, irecvPE;
   
     MPI_Status istatus;

     /* Information of Send and recv PEs */
     isendPE = myid - 1;
     irecvPE = myid + 1;
     if (myid == 0) isendPE = numprocs - 1;
     if (myid == numprocs - 1) irecvPE = 0;   
    
     /* Block Length */
     ib = n/numprocs;

     for(iloop=0;iloop<=NPROCS-1;iloop++){
        jstart = ib*((myid+iloop)%NPROCS);
        for(i=0; i<ib; i++) {
          for(j=0; j<ib; j++) {
            for(k=0; k<n; k++) {
              C[i][jstart+j] += A[i][k] * B[k][j];
            }
          }
        }

        if (iloop != (numprocs-1)) {
           if(myid % 2 == 0){
              ierr = MPI_Send(B,ib*n,MPI_DOUBLE,isendPE,iloop,MPI_COMM_WORLD);
              ierr = MPI_Recv(B_T,ib*n,MPI_DOUBLE,irecvPE,iloop+numprocs,MPI_COMM_WORLD,&istatus);
           }
           else {
              ierr = MPI_Recv(B_T,ib*n,MPI_DOUBLE,irecvPE,iloop,MPI_COMM_WORLD,&istatus);
              ierr = MPI_Send(B,ib*n,MPI_DOUBLE,isendPE,iloop+numprocs,MPI_COMM_WORLD);
           }
           for(p=0;p<=ib-1;p++){
             for(q=0;q<=n-1;q++){
                B[p][q] = B_T[p][q];
             }
           }
        }

     }
}

メモ:Hello World! MPI

Hello World!のコードにMPIを実装したもの。

課題では全てのプロセスで独立にprintf "Hello World!"する(プロセス間通信無し)コードを書くことが目的であったが、これに加え、プロセス間で1対1通信する(正確にはプロセス番号0のプロセスから全プロセスにHello Worldメッセージを送る)ものと、プロセス0からBroadcastで全プロセスにメッセージを送るものを作成した。


この2つを作るときに引っかかったのがstrcpyでchar型変数に文字列を代入するところ。はじめはポインタを用意して(char dsendbuf[]がchar *dsendbuf)いたが、それだと容量の大きいメッセージを送る場合にバグるみたいなので、string.hを使ってstrcpyで文字列代入する方法を採ったが、文字列の代入方法とかはあまり詳しく知らなかったので苦労した。

これをコンパイルして精製されるhelloをT2Kで動かす場合、helloとは別にnumactl命令の内容を書いたファイルとqsub用のバッチファイルが必要。


------------1対1通信-----------



#include <stdio.h>
#include "mpi.h"
#include <string.h>

void main(int argc, char* argv[]) {
     MPI_Status istatus;
     int    myid, numprocs;
     int    ierr, rc;
     char   dsendbuf[14], drecvbuf[14];
     int    i;
      
     ierr = MPI_Init(&argc, &argv);
     ierr = MPI_Comm_rank(MPI_COMM_WORLD, &myid);
     ierr = MPI_Comm_size(MPI_COMM_WORLD, &numprocs);

     strcpy(dsendbuf, "Hello World!¥n");
     if (myid == 0) {
       for(i=1; i <= numprocs - 1; i++){
          ierr = MPI_Send(&dsendbuf, 14, MPI_CHAR, i, 0, MPI_COMM_WORLD);
       }
     }
     else {
          ierr = MPI_Recv(&drecvbuf, 14, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &istatus);
          printf(drecvbuf);
     }


     rc = MPI_Finalize();

     exit(0);
}





-----------Broadcast---------


#include <stdio.h>
#include "mpi.h"
#include <string.h>

void main(int argc, char* argv[]) {
     MPI_Status istatus;
     int    myid, numprocs;
     int    ierr, rc;
     char   dsendbuf[25];
     int    i;
      
     ierr = MPI_Init(&argc, &argv);
     ierr = MPI_Comm_rank(MPI_COMM_WORLD, &myid);
     ierr = MPI_Comm_size(MPI_COMM_WORLD, &numprocs);

     if (myid == 0) {
       strcpy(dsendbuf,"Hello World!\n");
     }
     ierr = MPI_Bcast(&dsendbuf, 25, MPI_CHAR,0,MPI_COMM_WORLD);
    
     printf(dsendbuf);


     rc = MPI_Finalize();

     exit(0);
}




2011年8月2日火曜日

AICS Summer School 1,2日目


上の画像は理研計算科学研究機構のあるポートアイランドの(無駄に)広大なる景観。
上に走っているのがポートライナー。写真中央に見えるのが計算科学研究機構の計算科学センタービル。サマーセミナーが行われ、京コンピュータのある建物はその左にある。

そしてそれ以外にはなんっにもない。周りには工場やら研究所だけ。自分の宿泊しているホテルの近くでも、せいぜいファッションセンター(笑)やグルメシティ(爆)しか見つからなかった。本屋すらないので、暇つぶしも出来ない。その上参加者の中でも完全アウェーなので、早寝早起きをし、セミナーが終わると真っ直ぐにホテルへ帰り、近くのダイエーで弁当やおかずを買って帰るという、京都とは打って変わって貧相な遠征生活を送っております(お金もないのです)。「ここに1週間もいたら気が狂う」といってたMTさんの言葉は本当でした。

といっても、セミナー自体は非常に面白いし勉強になります。特にこのセミナーでは実際に並列化したプログラムを「書く」ということに重点を置いているので、以前にあったCCSの授業内容を復習しながら、MPIなど並列化のテクニックを実践を通して習得していくことが出来ます。僕はC言語の読み書きについてはまだあまり馴染みがないので、行列計算などのプログラムを解読し、並列処理出来る部分にMPIの構文を仕込んでいくという作業をじっくり出来るという本セミナーの環境は好都合でした。今日も3,4個のプログラムを書き、東大のT2Kを使い、デバッグから実行までやりました。


一日目はイントロダクションとして、まず計算科学の歴史とか概念とかを聞かされました。僕はそもそもこの分野出身ではないし、研究分野としてというよりはツールとして学んでいるので抽象的なことはよく分からんのですけれども、少なくとも分子系統学のみならずこれからの生命科学分野には高性能計算処理(HPC)の概念は必要不可欠のものであると思います。

「データ(解析するための素材)を採ることこそが最も大事なこと」なのは言うまでもないことですが、それを如何に高速に、効率よく解析するのかという考えも同じぐらい大切なことです。特に現在では、膨大で有用なデータを持っているにも関わらず、それを解析できる処理能力を有する計算機を持たないがために、研究結果が出せない例が増えてきています。この場合問題なのは単に解析時間の速さだけでなく、メモリ容量などが足りないためにそもそもPCでは解析できないというケースも含むため、MPIなどの分散メモリ型並列処理のテクニックはより一層重要になってくるわけです。

「時は金なり」といいますが、単位時間にどれだけ多くの計算結果を出せるかと言うことは、単位時間にどれだけ多くの業績を出せるのかということにも繋がり、どれだけ多くの資金を取ってこられるのかということにも直結することだと考えます。まあカネがなければそもそも計算機は買えないんですけどね。

----- 閑話休題 -----

イントロダクションの二つ目としては、京スパコンのことを教えて貰いました。TOP500などの結果から言えば、京スパコンのパフォーマンスは、LINPACKベンチマークで他を引き離して8.162PFLOPSという数値をたたき出したことだけでなく、実行効率(ピーク性能に対する実行性能)が93%という圧倒的な高さであったこと、電力効率もGREEN500で6位だったこと、そしてベンチマークテストでは28時間ぶっ続けで走り続けちゃんと完走したこと(他のスパコンは途中で止まった)、といったことなどに利があります。

システムとしては、直接結合網方式による6次元メッシュ・トーラス結合(Tofuネットワーク)の搭載や、セクタキャッシュなど独自のメモリアクセス最適化を施したスカラCPU、大規模な水冷・空冷装置両者による冷却性能の向上と故障率の軽減などが挙げられます。また、スパコン本体だけでなく、筐体を入れる計算室やAICSの建物の構造も、このスパコンの性能を最大限に引き上げるよう工夫されているようですね。


二日目の今日は、MPIプログラムの基礎を座学と実習に分けてやりました。座学の内容はCCSのセミナーとあまり変わらなかったので、復習がてら聞いていました。曰く、「並列処理をするときに一番重要なのは、SIMD(単一命令・複数データ流)の思考を持つということ」。あと、アムダールの法則は人によって例の出し方は違うようですが、コア数が無限に増えた際並列処理出来ない部分の割合が大きなネックになる、という最終的な主張は変わらないみたいです。


講義の後は、実際に逐次処理プログラムを並列化するという実習を行いました。使用したのはおなじみのHello World!や円周率計算プログラム(Cpi)、総和演算プログラム(逐次転送方式と二分木通信方式)、 C = A・Bの行列計算プログラムなど。基本的にCあるいはFortranでのプログラミングに慣れている人を対象にしているみたいですが、変数の宣言や代入方法などで分からないことがあったときでも親切に教えて貰いました。学部生時代にはC言語で作ったプログラムをコンパイルしたときに大量の訳分かんないエラーメッセージが吐き出されて辟易した思い出がありますが、今では読み慣れてきたおかげか、ほぼビビらなくなりました。

ちなみにこのセミナーではC使いとFortran使いが半々みたいです。僕はそれまでFortranはCとかC++より遅いと勝手に思っていましたが、そうではないようです。Fortranは文法構造の制約が強い反面単純なので、C,C++より最適化がしやすいそうです(C,C++はFortranより抽象化レベルが高い分、直感的にプログラムが書きやすい)。現在は概してFortranの方が速いということでもないようですが、スパコンなどで走らせるプログラムを書く場合は、そもそもスパコン側のコンパイラがFortran用に最適化されていることが殆どなのだそうです。生物分野で速いプログラムだと大抵CかC++だったので、この点は意外でしたね。将来はC,C++とFortranどちらでもプログラムが書けるようになりたいものです。

明日は並列化のより応用的な例として、有限体積法や並列データ構造・領域分割を学びます。


PS.
上記のようにあまりに暇なので、ブログのロゴを変えました。個人のセンスはさておき、自分としてはひとまず納得できる物が出来ました。加えてURLの横にあるファビコンも変えましたが、Safariだとキャッシュを空にしてもブックマークを登録し直しても更新されませんでした。他のブラウザではどうなのかな?

葉月

もう8月。

SMBEもおわり、昨日はお墓参りした後にMFにKKKのお土産を届けて、今僕は東京の実家で携帯の替えがくるのを待つ間、仕事をする弟を眺めております。
SMBEではいろいろなことがありました。
UndergraduateのMentorプログラムでは僕のMentorが現れない、次の日のポスターセッションで紹介されて握手を交わした後戻ってくるからの一言を残しそれ以降行方不明。
メガネの鼻当てがあんみつやメガネをはずした瞬間にでもげる。さらに携帯が東横○ンの便器にダイブ。1、2日使えたものの突然液晶が真っ暗に・・・最終日はつくば京都間の時差のせいか熱が出てふらふらになってしまう。
という、いい思い出。

kami様行きつけの居酒屋くれ●まやデカ盛のハ○ライト、100年続く肉屋のハンバーグなど京都グルメ?も堪能してまいりました。ただ都路◎のカキ氷はタイミングを選びます。

出張先の御飯てなんていいんでしょう。来年も出張できるようにデータを出さなくては!

PS僕がいつも食べてるのはミンテ○アです。ある種の病気の薬じゃありませんよ!!