2010年12月21日火曜日

12/21 Parallel Nsight

GPUへの移植はすぐにできた(3時間程度)が、
どうも正しく動いていないようでデバッグに苦戦している。
GPUプログラムのデバッグにはnvccに-gと-Gの二つのオプションを
送ることが必要なのはわかったが、さすがにcuda-gcdには限界がある。

グラフィカルデバッグ環境を構築するため、昨日Windows7のマシンをセットアップした。
Visual StudioとNvidiaのプログラムをインストールしたがうまくいかない。

U君のクライアント環境ではうまくできたようなので、作業をお願いしたところ、
Visual Studio 2008のStandardが必要で、Expressではインストールできないらしい。

思わぬところで作業がストップしてしまった。

2010年12月10日金曜日

12/10 parser 4

とりあえず一番単純なパターンが動いた。
オートマトンを実装したら、実はスタックが必要ないことが判明してショックだ。

現在は開始タグとアトリビュート、テキストデータのみを処理器に送信している。
しかしながら、それぞれを別の関数に渡しているため問題があるかもしれない。
このあたりはXpathやXQueryなどのアプリケーション依存になりそうなので、
それを見てから考えたほうがよさそうだ。

現在の実装をPowerPointで整理したら、CPU版の最適化かGPU化を行う予定。
どちらを行えばよいか迷う。

2010年12月9日木曜日

12/9 parser 3

スタックの続き。
昨日のエラーはただのスタック更新時のポインタの差し替え違いだった。
とりあえずスタックを確認しながら遷移する部分は成功。

しかし現状では見栄えが非常に悪いのでスタック関連を関数に切り分ける。
クラスにしてもいいのだが、CUDAへの移植時に面倒になりそうなのでパス。

必要な部分は全て変更を終えたのだが、動かない。
また明日頑張ろう。
オートマトンの実装が遠のいてしまった。

CUDAではSTLのスタックが使えないのがつらい。

2010年12月8日水曜日

12/8 parser 2

気がついたら23時になっていて驚いた。

Parserにスタックを使ってタグ名を監視する部分を追加したら、
Segmentation Faultを連発になり非常に困った。
スタックの実装がよろしくない模様。

GDBを使ってトレースしていたのだがさすがに面倒になってきた。
明日はVisual Studioを使ってもう一度見直してみるつもりだ。
もう一歩のところまでは動いているようなので、集中してやれば何とかなりそうだ。

タグを識別して処理を投げるところまではできているので、
オートマトンの作成や更新にも手が付けられそう。


GPU化を意識し原始的な作りにしてあるので、可読性が非常に低いのが難点だ。
インデックスを用いて文字列の比較を行っているため、
if,for,whileの巨大なお化け状態になっている。
手続き型プログラムの限界を感じる。

2010年12月7日火曜日

12/7 Parser

中間も終わり、課題も1月提出のものが大体なのでようやく余裕が出てきた。
今日はParserの実装を多少進めた。

タグ数種類とそれ以外を区別して吐き出す状態まではできたが、
現在の実装で方向性が正しいかどうか疑問が出てきた。
タグの種類の解釈までを分割器に行わせるか、
その後段のオートマトン側で行うべきかが悩ましい。

2010年12月3日金曜日

12/3

ブレードサーバへのOSインストールを完了。
PXEからだとディスクをうまく認識せずKernelパニックになったが、
CDから起動したらすんなりOKだった。
PXE用のイメージを新しくすべきかもしれない。

ブレードのラックへの組み付け作業中に右手親指を負傷した。
楽器が弾けるかが心配だったが、一応大丈夫だった。
しかしちょっと音が腑抜けになった気がする。ショック。

中間テストの追試が延期になった。
猶予ができたのは嬉しいが、少ししんどい。

C++のファイルストリームでファイルを読み込むと、
空白が区切り文字になってしまい嬉しくないが、
I君とU君に聞いても解決策がわからなかった。
おとなしくファイル構造体で読み込むことにする。

2010年11月20日土曜日

11/19 限界

BladeCenterSとの長時間の格闘の末、敗北した。
こんな強敵はSunのALOM以来だ・・・。
しかしながら、HTTPでアクセスする方法を見つけたので一矢報いることはできた。
ファームウェアの更新を諦めてOSインストールを済ますのも一つの方法かもしれない。

スライドの更新がほとんど進まなかった。無念。
もう学会も近いのにこれはまずい。

2010年11月18日木曜日

11/18 発表スライド

今日は学会用のスライドを修正した。
XMLの実装を考えたりスライドにまとめたりもあるが、
先に学会の準備をしておかないと不安になってしまい集中できない。
スライドはそこそこできてきたが、動的負荷分散などをどの程度話すべきかがわからない。
発表時間は全体で20分で、発表15分質疑応答5分が望ましいそうだ。

導入(貢献、DSMSの説明)2分
背景(統合実行の必要性、実例)3分
レイテンシと動的負荷分散2分
実装全体の概要1分
System Sの実装1分
Hadoopの実装1-2分
評価と考察3分
まとめ1分
<合計15分>
このくらいを想定すればいいのでしょうか。

あとはI君と二人でG君の実装を助けた。TCP関係ははまりやすいらしい。
3人でXP的にデバッグ方法を色々試みてみたが、なかなかうまくいったと思う。
動かない原因はhostfileの設定ミスとSourceの入力フォーマットの欠落だった。
Sourceオペレータはcsvformatなどを設定するか区切り文字を指定してやらないと、
入力データを延々とバッファリングしてしまうらしい。
最近区切り文字に纏わるバグが多い気がするが、季節柄なんだろうか。

streamtoolやmonitorの方法なども伝えたので、次からは是非使いこなしてほしい。

2010年11月11日木曜日

11/11

今日はポッキー・プリッツの日らしい。
N君がプリッツを買ってきてくれた。
相変わらず面白い人だ。

Fermiのmalloc()関連のマイクロベンチが一通り完遂した。
次はsharedメモリでの実装なので楽しみ。
課題も残すは2つくらいなのだが、中間テストがあるので気が重い。
月末用の発表練習もそろそろ始めたいが状況は芳しくない。

2010年11月2日火曜日

11/2 CUDAのvimでの色分け

suで作業する
# vim /usr/share/vim/vim70/filetype.vim

C++の部分を編集
#########################################
" C++
if has("fname_case")
au BufNewFile,BufRead *.cxx,*.c++,*.C,*.H,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
else
au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
endif
#########################################

これの両方に*.cuを追加すればOK

#########################################
" C++
if has("fname_case")
" au BufNewFile,BufRead *.cxx,*.c++,*.C,*.H,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
au BufNewFile,BufRead *.cxx,*.c++,*.C,*.H,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl,*.cu setf cpp
else
" au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl,*.cu setf cpp
endif
#########################################

色分けの恩恵をCUDAファイルでも受けられる

11/1 ゼミ

昨日はゼミだったが、無事終わって安心した。
研究の方向性も一応軌道修正がなされたのでよかった。
今後はマイクロベンチと論文読みを並行する。

講義数が多いせいもあるのだが、7教科中5教科くらいで
宿題が発生しており、かなり予定が逼迫している。
全体発表は終わったのでまだ余裕は出てきたが、早く片付けてしまいたい。

昨日数値を出したマイクロベンチだが、Fermiに乗せ変えて
再コンパイルのみを施して実行するとかなり早くなった。
全てのファイルサイズで2倍から3倍に高速化されており、
L2やアーキテクチャの効率化の恩恵が如実に反映されていた。

2010年11月1日月曜日

11/1 TSUBAME2

11月になった。寒い。

TSUBAME2がサービス開始。
登録がWebのみで済むようになり、だいぶ楽になった。
早速利用してみたが、TESLA C2050を三台搭載したインタラクティブノードに接続できた。
小規模のテストならこちらでも実行できそうだ。

TSUBAME2の利用申請の詳細は研究室内部ページに追加した。
簡単に登録できるので利用予定がなくても登録しておいて構わないと思われる。

ちなみに、pgaccelinfoというコマンドを使えばTSUBAME2のGPUを確認できる。

2010年10月25日月曜日

10/25 祭りの後

学際が終了した。
I君、そして研究室の皆様お疲れ様でした。
返納品があるのでそちらも忘れないでください。

今日は研究の問題点をまとめたスライドを作成した。
GPU上での処理のフローがまだまとまっていないので、
それについては今後継ぎ足す必要がある。

スライドを作り始めると細かいアーキテクチャや
数値が気になってしまい停滞するので注意しなければ。

2010年10月20日水曜日

10/20 論文

投稿が二週間近く跳んでしまった。

ようやく論文を郵送できた。
これで安心して他の作業に取り掛かれる。
マルチタスクは難しい。

郵送には科研費は利用できないので注意。
校費で。

2010年10月8日金曜日

10/7

今週末は旅に出ます。
安心して旅立てるよう、ComSysの修正を早く終わらせなければ。
あとはアルゴリズムの項目をくっつけるだけなので、
明日頑張ればぼちぼち終わるはず・・・。

明日は返納品の作業もあるのであわただしくなるかもしれない。

2010年9月27日月曜日

9/27 議事録

次の全体ミーティング
・ComSysまでの内容のまとめ
・先生のXMLのスライドを用いて概要の説明
・GPUでの簡易的な実装と評価

ComSysまでのまとめは短めでよい。
概要もだいたい伝わっているので省略する。

XMLについてはこれからの研究なのでしっかり説明する。

GPUの実装は評価次第で変更あり。
色々なパターンを想定した実行結果が必要。

CPU実装の場合も、オートマトンが巨大化するような場合は
統計情報を用いて排除するらしいので、それを言い訳に使う。

2010年9月22日水曜日

9/22 英語の論文

論文ではdoesn'tは禁止。
他の省略表現も避けなければならないらしい。

2010年9月17日金曜日

9/17 論文誌

目指すべき論文誌

電子情報通信学会
情報処理学会
ACS

additional:日本データベース学会

2010年9月13日月曜日

9/13 PPL2010

昨日は津田塾学園という陸の孤島にチュートリアルを聞きに行った。
Sun(Oracle)のFortress、GoogleのGO、IBMのX10の三つの説明が行われた。
どれも3時間近くにわたる長い講演だったのでなかなか体力を消費した。

Fortressの講演は英語で、言語仕様の話は少なかったのであまりよくわからなかった。

GOは並列部分に関しては共有メモリ方式からメッセージ方式にしたところが新しいようだ。
細かい言語の仕様については従来のコンパイル言語の可読性の悪さや、
型やインターフェイスの使いにくさをスクリプト言語の仕組みで補ったようなものらしい。

X10はJavaをベースにし、ヘテロな並列分散環境に対応し、
書き易さと性能の出しやすさのバランスを求めて作成されている。
Placeという概念を持ち込むことで、データのスコープなどが適切に管理できるようだ。
Placeを適切に区切ることにより、キャッシュやメモリの範囲を意識しつつ並列処理を容易に記述できる。
Javaの同期の面倒さも記述や実行方法を改めることで解決しているらしい。

上記の内容は大いに誤りを含んでいそうなので参考にしないでください。

2010年9月4日土曜日

9/3 特になし

椅子を買った。下宿での作業効率が大幅に高まった。
4410円だったので、こんなことならもっと早く購入しておけばよかった。

英訳は遅々として進まないが、はじめたばかりのときよりはマシになってきた気がする。

CDプレーヤーが音飛びしまくるので買い換えたいが、お金が足りない。
プレーヤーも問題だが、アンプも真空管で作りたい。
回路のブロックはできているのだが、ケースをどうするかで非常に迷っている。
難しい。

2010年8月14日土曜日

8/13 帰省

ただいま帰省中。
論文の英訳を進めるはずが、分散システムの課題を未提出であることに気付く。
気付いてから頑張ったのだが、提出期限をオーバーしてしまった。
すでに一教科切ってしまっているので、単位がくることを切に願う。

英訳のほうも頑張らないと提出期限に間に合わないかもしれないため恐ろしい。

2010年8月9日月曜日

8/9 今月のタスク

インターンから帰ってきました。

今月のジョブは、ComSys2010に提出した論文の英語化だ。
締め切りは9月16日です。

DASFAA 2011 Hong Kong
http://www.cintec.cuhk.edu.hk/DASFAA2011/

2010年7月25日日曜日

7/24 雑記

無事(?)論文を提出できました。
忙しい中時間ご指導してくださった先生、実験やモジュールの提供などで協力してくださった皆さん、どうもありがとうございました。
そしてG君はメールを見よう。

明日からはインターンのため千葉の某所に行ってきます。
二週間頑張ろう。

今一番心配なのは、下宿する寮でWiMAXの電波を受信できるかどうかだ!!

2010年7月21日水曜日

7/21 締め切り二日前

締め切り二日前にも関わらず悠長に実験しているのだが、
Hadoopと統合実行するとレイテンシが発散してしまう。
どうやら、Hadoopのジョブの粒度が大きすぎるせいのようだ。

Hadoopで処理するファイルは現在合計178MBのテキストファイルなのだが、
現在は1時間ごとのデータなのでたった24個のファイルしか存在せず、
一つのジョブの粒度が数メガ単位になってしまっている。
これでは思うようにジョブの切り替えが行えないので、
ファイルをsplitコマンドで1万行ごとに区切ることに。

1000行で分割すると、ファイルが多すぎてHadoopの処理が極端に遅くなるため、
今は10000行ずつ分割するパターンで試している。
1000行ずつ分割すると2000個以上のファイルができるが、10000行ずつだと225個のファイルとなる。


この実験に差し掛かる前に、Hadoopへのコマンドがうまく渡せないというエラーがあったが、
SPADEのコードをコメントアウトしていたのを忘れていただけだった。まぬけだ。

2010年7月18日日曜日

7/18 タプル数+レイテンシによる負荷分散


レイテンシの変動も監視する機構を追加することで、
ヘッドノードのみが発散してしまうという現象を食い止めることができた。
そろそろHadoopと同時に実行してみる予定。

2010年7月17日土曜日

7/16 SDAR組み込み


G君のSDARアルゴリズムによる未来予知を組み込んだ動的負荷分散プログラムの実行結果です。
色々改善されていますが、まだヘッドノードの応答性が改善されていません。
これは統合実行環境そのものの負荷なのでどうにかしないといけないでしょう。

2010年7月16日金曜日

7/16 CPU使用率の測定


gxpcとperl、シェルスクリプトを組み合わせることでCPU使用率もうまく測定することができた。
topコマンド単体では0.01秒までの測定を行うことができるため、
topコマンドのバッチモードの結果をうまくパースすることでミリ秒単位の測定が行える。
topコマンドの応答時間は本当に正しいか怪しく、マイクロ秒単位での実時間との関係もわからないため、
コマンドの実行前後でUNIX時間からのマイクロ秒数を設定し、topの測定回数を決めることで、
だいたいの測定時刻を設定することができる。現在は等間隔に実行されていると仮定して出力している。

まずはSDARなしの場合の実行結果を掲載する。
次はSDARを組み合わせた結果をすぐに載せる予定。

topの測定間隔と入力レートの測定間隔は0.05秒、マッチ個数は2000で実行している。

2010年7月14日水曜日

7/14 帰ってきた負荷分散


タプルをもとにした動的負荷分散プログラムの実行結果。
アプリケーションは今までと同じくTwitterの発言からの文字列検出だが、
マッチングの数が2000に増えている。

実行環境は2ソケット8台クラスタで16プロセスを用いて動的負荷分散を行っている。

結果を見たところ、高負荷時には全体的に発散してしまっているが、
その中でも特に2番目のプロセスの発散の度合いが大きい。
これは、1台目の計算ノードでスケジューリングを行っている点が大きいと思われる。
このノードにはデータが集中しないよう配慮する必要があるかもしれない。

また、ノード数が十分なはずなのに発散が起きてしまっているのは、
入力レートが不安定なところに引きずられて、うまくノード数を増やせていないせいだと思われる。
これはG君のSDARを適用するだけでうまく解決できるかもしれない。

2010年7月7日水曜日

7/7 タプル数とレイテンシ


理由は何故かよくわからないが、測定がうまくいった。
検索単語50個における1プロセスでのレイテンシとタプル数の関係を測定。
タプル数は出力側で100から2000まで50ずつとした。
出力は1700前後で飽和しているが、1500前後でレイテンシが発散しているため問題ない。

1500前後における詳細な挙動を観測し、これを閾値として今後の実験を行う予定。

7/7 七夕

アルゴリズムの実験を行うために、アプリケーションの負荷を測定中。
しかし、計算負荷が軽すぎるのでなかなかうまくいかない。
入力データレートによるレイテンシの差異より、揺らぎによる差異のほうが大きくなってしまう。
マッチングを取る数を、50にまで増やしたものの、その傾向は変わらない。

2010年7月5日月曜日

7/6 UDOPによる文字列探索


U君が作ってくれたTwitterの汎用UDOPを用いて文字列探索プログラムを作成した。
これのレイテンシの評価を行ったので掲載するが、あまりいい結果にはならなかった。

負荷が増大してもレイテンシの値が小さい部分がある。
これは入力レートがうまく増大していない可能性があるので、
今度はレイテンシの値にも実測値を用いて計測を行おうと思う。

2010年6月30日水曜日

6/30 PuTTYの色変更

PuTTYでコンソールを表示すると、青色が見難くて悲惨なことになる。
これを解消する手段として、bashの色分け設定を変更するなどといった方法が存在する。
しかし、これではsuのときやvimでの表示などではあの忌々しい青色が復活してしまう。

これを根源的に解決する手法として、PuTTYの設定そのものを変更するという手段がある。
やり方は簡単で、PuTTYの左側のメニューから「ウィンドウ」の「色」を選び、
「変更する色を選択」から「ANSI Blue」を選び、値を赤:0、緑:0、青:187から、
赤:85、緑:85、青:187などといった適当な値に変えればよい。
この色は、bashで色を薄くした際の表示と同じなので整合性が取れると思われる。

PuTTY常用者なら試す価値あり!

2010年6月25日金曜日

6/25 拡張したHadoopのJarファイル

Eclipseで拡張したHadoopをjarファイルに戻す方法。

今回はTaskTracker.java周辺を拡張したので、
そこから生成されるファイルを更新すればよい。

大本のファイルはhadoop-VERSION-core.jarに入っているので、
これをどこかへ一度展開する。

$ jar xvf hadoop-VERSION-core.jar

解凍したファイル中のorg/apache/hadoop/mapredに、
JobTrackerと周辺のファイルからできた.classが収まっている。
これを、Eclipseのworkspaseのbin以下の同じディレクトリからコピーする。

$ cp SRC/JobTracker* DST/

その後、何事もなかったようにjarで圧縮しなおして、
HadoopのHOMEディレクトリに返せばOK。

$ jar cvf hadoop-VERSION-core.jar SRC_DIR/*
$ cp hadoop-VERSION-core.jar HADOOP_HOME/

以上。

2010年6月23日水曜日

6/23 データディレクトリ

/nfs/data0、/nfs/data1の運用を開始。
それぞれ2TB。

2010年6月20日日曜日

6/20 ICDE勉強会

ICDEによる過密スケジュールがようやく終わった。
研究が進んでいないのでがんばりたいが、他の課題も控えているため難しい。

個人的にはGenerating Code for Holistic Query Evaluationと、
例のFPGAの研究が非常に面白かった。
L2を意識してクエリを動的にコーディングしたり、
オーダーを悪化させてもハードウェアパイプラインに適した処理を
実装したほうが最終的な計算時間を短縮できたりと、
やはりハードウェアを意識した研究は楽しいと思う。

あとは、中国勢の論文が多いことにも驚かされた。
数は力なのだろうか。

2010年6月11日金曜日

6/11 DSMS + Hadoop

講義や論文提出などに終われ、自分の研究のアップデートが遅れてしまった。
近傍の予定
・動的負荷分散アルゴリズムの出力を用いてノード数を決定するモジュールの作成
・拡張したHadoopのJar化
・DSMSによる文字列マッチングオペレータの作成

一つ一つのジョブは軽いので、早く終わらせなければ。

2010年6月7日月曜日

6/7 DE研究会

ようやく論文を投稿できました。
協力してくださった皆さん、ありがとうございます。

2010年6月4日金曜日

6/4 HDDのテスト

研究室に新しいDiskが二枚やってきた。
WD20ARS 2.0TB 5400RPM 32MB

このディスクはセクタが4kBなので以下のようにFormatする必要がある。
トラックあたりのセクタ数が8の倍数になるので書き込みが高速化する。
fdisk -H 224 -S 56 /dev/sdb

WDのチェックにはWESTERN DIGITAL DATA LIFEGUARD DIAGNOSTICSを使う。
CDから起動できるISOイメージもあるが、Windowsから実行できるものもある。
今回はDR-DOSでの起動が失敗したのでWindows上から実行した。
Short Testは2分ほどで終わるが、Zero Fillは5時間ほどかかる。
2台並列実行ができるのが救いかもしれない。

某掲示板のスレッドによると、
1. 電源を入れて温度が安定するまで放置 (室温次第、10分~2時間)
2. ShortTest (この時点の不良で以降の検査を省いて返品交換するならLongTest)
3. ゼロフィル
4. LongTest
5. OSでクイックフォーマットを実行してファイルシステムを作成、運用
このような順番でチェックするのが望ましいらしい。

チェックの内容
○Extended self-test / Long Test / ロングテスト
  HDDのセルフテスト 全セクタ読み出し検査 原則的に既存データに影響なし 1TBで250分前後
○Conveyance self-test / Short Test / ショートテスト
  HDDのセルフテスト 簡易検査 原則的に既存データに影響なし 3~5分
  容量にかかわらずで検査が終わる
○Zero Fill / ゼロフィル / ゼロ埋め / 物理フォーマット(歴史的用語)
  全セクタに書き込むので、未知の不良セクタがあっても自動代替される
  既存パーティション・データ等はすべて消える
  PCからHDD間に容量分のデータを送るのでLongTestと同等以上の時間を要する

6/4 Hadoopでのユーザアプリの実行

ユーザアプリはHadoop内のmapredに置かれているMapReduceBaseをインポートして作る。
packageは設定しないほうが楽だが、設定した場合は実行時にも影響する。

$HADOOP_HOMEをHadoopをインストールしたディレクトリで設定する。
これがないとうまく実行できない。

$HADOOP_HOMEにjavaファイルを置いてコンパイルする。
$ mkdir class_tmp
$ javac -classpath ${HADOOP_HOME}/hadoop-0.20.2-core.jar -d class_tmp SOURCE.java
$ jar -cvf JARNAME.jar -C class_tmp/ .

package hoge.foo.bar;
となっている場合は、SOURCE.javaの部分を./hoge/foo/bar/SOUECE.javaにする。

実行。
$ ${HADOOP_HOME}/bin/hadoop jar JARNAME.jar CLASSNAME ARG0 ARG1 ...

packageが指定してある場合は、CLASSNAMEをhoge.foo.bar.CLASSNAMEとする。
引数はjavaの設定に依存。


参考:ttp://www.unfindable.net/~yabuki/blog/2010/02/hadoop_1.html
今回は正しい情報に行き当たるまでにすさまじく多くの時間を無駄にしてしまった。
ショック。

2010年6月3日木曜日

6/3 NFS高速化

簡潔に言えば、非同期書き込みに読み書きサイズを増やせばよい。
加えて、TCPを使うことでRPC再送のオーバーヘッドを緩和できる。

・NFSの設定
### /etc/exports ###
NFS_DIR IP_ADDR/SUBNET(rw,async,no_root_squash,no_subtree_check)

・マウント時のコマンド
# mount -t nfs -o tcp,rsize=8192,wsize=8192 NFS_DIR LOCAL_DIR

・fstab
### /etc/fstab ###
ADDR:NFS_DIR LOCAL_DIR nfs hard,rsize=8192,wsize=8192,tcp 0 0

exportsの設定にasyncを足すのがポイント。
SUBNETと括弧を詰めて書かないとエラーが出るので注意。
exportfs -raコマンドでexports設定ファイルの確認と更新ができる。

2010年6月1日火曜日

6/1 JSON

Twitterのログを操作するPerlスクリプトを作成しているが、
JSONのPerlモジュールがうまく動かないため立ち往生してしまっている。
そもそも実装例がほとんどない。困った。

2010年5月25日火曜日

5/25 Eclipseの謎

昨日VNCを起動してみると、何故か立ち上げっぱなしのはずのEclipseが落ちていた。
しかも、起動しようとするとファイルがLockできないと言われて停止してしまう。

Lockファイルを削除してもうまくいかなかったため、
workspace/.metadata/.logのエラーメッセージを見て設定ファイルを編集。
eclipse/configuration/config.iniにosgi.locking=noneを足せばよいようだ。

この設定を追加すると、Lockの確認が行われないため二重起動などには要注意。


Hadoopのスライドも更新しなければならないが、講義の課題も増えてきて大変。

2010年5月18日火曜日

5/18 Switch

M研究室から借りているギガビットスイッチは機能が多すぎてよくわからない。
VLAN機能などはOFFにしているはずなのだが、やはり端の4端子がうまく繋がっていない模様。
昨日のサーバ室の大改装が終わった後、外部との接続が不可能になっていたようだが、
その原因も上記のスイッチの不具合によるものだった。
これ以上このスイッチと戦うよりは端の4つを諦めたほうがよさそうだ。

2010年4月28日水曜日

4/28 ゼミ

ゼミがやっと終わった。わーい。

Hadoopを頑張ろう。
某電電公社の関連企業が有用なデータを残してくれていたので捗りそう。
http://preferred.jp/hadoop.pdf

また、簡単にHadoopをEclipseで動かすためのプラグインもあるらしい。
どちらかというとMapreduceアプリケーションの開発用らしいが使えるかも。

2010年4月23日金曜日

4/23 Hadoopのdebug level変更

daemon起動時の引数を変更することで変えられる。
-Dhadoop.root.logger=INFO

-Dhadoop.root.logger=DEBUG

これでOK。

2010年4月19日月曜日

4/19 定期更新

ブログに書くべきことは色々あるのだが、書いている時間がないので困っている。
原因の70%はゼミの資料作成が大変なこと、20%は黄色い象にやられていること、
残り10%は家でネットにつなげないので自宅で更新できないことが挙げられる。

とりあえず今日は生存報告のみ。

2010年4月11日日曜日

4/11 GNU GLOBAL

http://www.gnu.org/software/global/
SourceコードをHTMLで読みやすい形に変換してくれるユーティリティ。
Methodごとに自動でリンクを貼ったりしてくれるらしい。
GSIC Sさんのおすすめ。

対応する言語はC/C++,Java,YACC,PHP4らしい。
Windowsでのインストールは適当なフォルダに解凍してbinにパスを通すだけ。

ソースが入ったディレクトリでgtags -vを実行。
その後htags -saFとすればHTMLが生成される。
gtags実行時に色々やるとemacsやvi用のファイルも生成できるらしい。

2010年4月8日木曜日

4/8 Hadoopが動いた

強力な助っ人にきていただいたお陰で無事Hadoopが動きました。
今回学んだ検証の手順として、
・最小構成からインクリメンタルに確かめる
・一度一度ログを見て動作をチェックする
ということでした。
単純なことのように見えて、常にこの二つを守るのは難しいと思い知らされました。

Hadoop固有の事柄としては、
・まずDFSの動作を確認してから他のデーモンを動かす
・logs以下に各ノードのデーモンごとのログがあるので面倒くさがらずにちゃんと見る
の二点です。

GSICのSさん、本当にありがとうございました。


実際にTeraGenとTeraSortを動かしてみたのでその結果も載せます。
sb01 - sb08 8node (Opteron 1.6GHz x2 Mem 4GB)
$ bin/hadoop jar hadoop-0.20.2-examples.jar teragen -Dmapred.map.tasks=400 80000 input
$ bin/hadoop jar hadoop-0.20.2-examples.jar terasort input output

TeraGenのオプションは一つ目が分割数(タスク数?)、二つ目がサイズ、三つ目が格納されるDFSのディレクトリ。
TeraSortのは見たとおり。

TeraSortの実行中の各計算ノードのCPU使用率は0%が1秒ほど続いた後100%が2秒ほど、を繰り返す模様。
-d 0.5のtopコマンドの目視なので怪しいかもしれない。
実行時間全体はtimeコマンドによると、
real 3m1.430s
user 0m3.284s
sys 0m0.353s
となっている。

これを4ノードに減らして実行してみると、timeコマンドは、
real 5m26.371s
user 0m3.671s
sys 0m0.383s

二倍近く高速化されていることが確認できた。

ノード数などを変更する際には、/tmp/hadoop-`whoami`*を消す必要があるっぽい。
dfsを再フォーマットする必要もありそう。

2010年4月6日火曜日

4/6 Hadoopの分散実行

シングルノードでの実行は成功したが、マルチノードではうまくいかない。
HDFSがちゃんと見れていないようだ。
昨日のTelnetでアクセスしてもsb01:50070やsb01:50030が繋がらない現象の影響と思われる。
FireWallなどは全て止めてあるので、別の原因があると思うのだが思い当たらない。

ちなみに分散実行のための設定ファイルはだいたいわかった。
conf/core-site.xmlにポートなどを記述し、conf/mastersとconf/slaveにノード名を書けばよい。
conf/mastersにはセカンダリの名前を書き、マスターノードは実行するノードである点には注意。

2010年4月3日土曜日

4/3 Hadoop

Hadoopを実行するにはHDFSという分散ファイルシステムが必要なようだが、
これをどのノードで実行するか迷っている。
対称計算環境を保持するには別ノードを用意するほうがいいが、電源的には微妙。

sbの8台が稼動。System Sも(きっと)実行可能。
Hadoop、Eucalyptusの実験環境となる予定。
ノードの故障やHDDのSMARTエラーなどに泣かされ、稼動までに三日もかかってしまった。

桜並木での飲酒が禁止なうえに六時以降の花見まで禁止されるらしい。
禁止するなら完全に禁止にしてしまえばいいものを、
一般人の入校規制は行われないし仮設トイレで準備されていて、完全に理解不能。
せめて入場料くらい取っていれば救いはあるものの、完全に金の無駄遣いだ。
学生や教員によるレジスタンス活動を強く希望する。

2010年3月31日水曜日

3/31 大掃除 + ネットワーク復活

今の研究室はすばらしく綺麗です。
新入生を迎え入れる準備も万端です。
長期にわたる労働のため疲労困憊です。

ルータのスイッチング電源が焼けて壊れるという残念な事件が発生したが、
現在無線ブリッジとして利用しているルータを代替に使うことで解決した。
無線LANブリッジを新たに入手したので、そちらで研究室側の無線LANをまかないます。
今日は設定を全て終わらせる体力も尽きたので明日か明後日やります。

2010年3月22日月曜日

3/22 CUDAインストール

CUDAのドライバインストールにはカーネルソースが必要
# yum install kernel-devel

カーネルソースを指定してドライバインストーラを起動
# ./NVIDIA-Linux-x86_64-190.53-pkg2.run --kernel-source /usr/src/kernels/2.6.18-164.15.1.el5-x86_64/

ここまでは全てのCUDA利用ノードで必須。

以後は/usr/globalを共有しているので不必要だが、toolkitとsdkをインストールする。
バッチを起動してディレクトリを適切に設定すれば簡単に終わる。

共有ディレクトリをマウントし、/etc/ld.so.confに/usr/global/cuda/lib64を加え、
# ldconfig
これでCUDAのライブラリが使えるようになる。

nvccへのパスも必要なので、.bashrcに/usr/global/cuda/binも加えておくこと。
以上でCUDAのコンパイル、実行が可能になる。
sg01、sg02で現在利用可能。

2010年3月11日木曜日

3/11 CUDA on 4GPU node

CentOS5.2へのCUDAのインストールにはカーネルソースとGCCのバージョンアップが必要。
# yum install kernel-devel
でOK。

# yum install gcc44
でgccをアップデート。

うまくいったらCUDAのdriverなどをインストール。


うそでした。ダメでした。
gccを変えてもカーネルモジュールがうまくインストールできず。
そもそもCUDA自体が5.3以降を対象としているため、いくらあがいても無駄そう。
諦めて5.4をインストールして出直すことに。

時間を大量に無駄にしてしまった。ショック。

(ついでにsa05-08も5.4に載せかえた。)

2010年3月9日火曜日

3/9 情報処理学会

・情報処理学会全国大会
発表内容自体は卒論から変更されていないが、練習を何回か経た後なので今までで一番うまく話せたと思いました。
発表練習を指導してくださったり質疑応答を手伝っていただいた皆さんのお陰です。
ありがとうございました。

・System S 1.2インストール手順
$ cd
$ mv InfoSphereStreams SystemS/InfoSphereStreams1.0 # 今までのSystem Sを退避
$ cp /nfs/home/share/InfoSphereStreams12 . -R # インストーラをコピー
$ ./InfoShereStreams12/InfoSphereStreamsSetup.bin # インストーラを実行(VNC上でやること)
インストール自体はGUIを見ればだいたいわかるはずなので省略。
SELinux関連やIBM-javaのバージョンなどは無視でOK。

インストール終了後はシンボリックリンクを作成して二つのバージョンを切り替えられるようにする。
$ mv InfoSphereStreams SystemS/InfoSphereStreams1.2
$ ln -s SystemS/InfoSphereStreams1.2/ InfoSphereStreams

設定ファイルなどはv1.0のものを流用できるため、特に触れる必要はない。

2010年3月5日金曜日

3/5 System S 1.2

System Sの新Versionをインストールした。
CentOS5.2から5.4にアップグレードしたためアップデートが必要なパッケージが若干減った模様。

GUIでのインストールなら大した問題は発生しないが、SELinuxには多少注意を要する。
Ver1.2からはSELinuxのパッケージがインストールに必要だが、
インストール時にはSELinuxをDisableにしなければユーザ権限でのインストールができない。
root@node # setenforce 0 とすることで無効化が可能。
/etc/selinux/configのSELINUX=ENFORCINGもSELINUX=DISABLEDに変更する。
これで起動時にも無効となる。

System S 1.0との連動だが、どちらかのデーモンが立ち上がったままだともう片方のデーモンが起動できない。
stop_streams_*.shは確実に実行することが必要。

上記に付随する内容だが、stop_streams_*.shは~USER/.streams/config/hostfileを参照している。
このため、NODE_Aでデーモンを起動後、hostfileからNODE_Aの記述を消去し、
それからstop_streams_*.shを起動すると、NODE_Aに関する一時ファイルが残存して害を為す。
hostfileの書き換え時にはデーモンが実行中でないかどうか必ずチェックする必要がある。

3/5 PXEブートの注意点

計算ノードのOSをCentOS5.2から5.4へ更新するためPXEブートでネットワークインストールする。
KickStartファイルのFTPアクセス先を5.4に変更して実行したのだがエラーが発生した。
PXEブートに利用したvmlinuzとCentOSのイメージファイルのバージョンが違うためのようだ。
tftpで転送されるvmlinuzとinitrd.imgを5.4のものに差し替えると正常に動作した。

また、KickStartファイルでSELinuxを有効にする場合は--enforceオプションを用いる。
停止の場合は--disableなので書式に注意。

2010年2月20日土曜日

2/19 卒論発表

今日は卒論の発表でした。
質疑応答で多少回答内容を間違えてしまったが、ひとまず無事に一年の仕事を終えることが出来た。
実装面が足りない点が多々あるので、今後はそちらの増強を頑張りたいです。

最後まであきらめず面倒を見てくださった先生をはじめ、色々ご意見をいただいた皆さんに感謝します。
そして、打ち上げの焼き肉ごちそうさまでした。

2010年2月10日水曜日

2/10 卒業論文提出完了

無事二人とも卒業論文を提出することができました。
思えば今年一年は開始早々からわからないことばかりで、
色々な方々のご助力がなければ確実に二回は留年したことでしょう。

先生をはじめとして、お隣のK研究室、T研究室、
そしてM研究室の皆さんやK先生のお陰で何とか一年を締めくくれそうです。

卒論発表もあるので、最後まで気を抜かずに頑張りたいです。

2010年2月5日金曜日

2/5 TeX

卒論のTeXがどうにかなったので、ようやく文章に移ることができた。
ご協力いただいたお隣の研究室の皆さん、ありがとうございます。

2010年2月1日月曜日

2/1 雪が降った

参考文献は英語ばかりなので、英語を読み過ぎて頭がおかしくなりそうだ。
まだ半分以上の論文が残っているので今後が危ぶまれる。

i2b2プロジェクトや小長谷先生の了承も取れ、サーバルーム整備の準備が整いつつある。
今までで最大級の改築になるが、これが済めば使えるノードも倍増するので楽しみだ。
懸念事項としては、200Vをいかにして利用していくかが挙げられる。
現在のところタップが一つしかないため接続数が11台に限られてしまっている。

2010年1月29日金曜日

1/29 懺悔

最近論文に追われていてブログをちゃんと更新していませんでした。
しかも昨日はSACSISに提出が済んだせいで気が抜けてしまい、全く卒論の作業をやりませんでした。
そのうえ先生の名前を前後間違えて提出してしまいました。

今日から頑張ります。

2010年1月23日土曜日

1/23 gccのusleep()

sleepで指定したマイクロ秒だけusleep()し、
合計の秒数が1秒になるよう回数を調整して実行した結果。
実行はstreams02で行った。

1.100085sec. sleep = 10000.
1.206834sec. sleep = 5000.
1.451034sec. sleep = 2500.
1.500036sec. sleep = 2000.
2.002072sec. sleep = 1000.
2.002207sec. sleep = 500.
4.021739sec. sleep = 250.
5.004297sec. sleep = 200.
10.028340sec. sleep = 100.
20.063263sec. sleep = 50.

10ms程度、最悪でも5ms以下のusleepは使わないほうがよさそう。

2010年1月12日火曜日

1/12 デバッグ中

二日に渡る格闘の結果、ラウンドロビン部分とアグリゲート部分の正常動作は確認できた。
SSTにもうまくデータが送られ、それらしきスコアが返されているように見えるのだが、
どうやってもレイテンシの値が予測される値とかけ離れてしまう。
数十個に一つ0.1s台が出る程度で、他のほとんどの結果が2ms程度になってしまう。

2010年1月9日土曜日

1/29 SPADEの分散コンパイルによる速度向上

-j 8 -r 8
real 1m5.460s
user 0m31.292s
sys 0m10.082s

-j 8 -r 4
real 1m25.733s
user 0m43.968s
sys 0m11.721s

-j 4 -r 4
real 1m29.458s
user 0m49.873s
sys 0m11.478s

-j 1
real 3m50.559s
user 2m19.719s
sys 0m17.348s

測定はCenOS5.2のtimeコマンド、測定環境はstreams01-08ノード。
-jはコンパイルスレッド数、-rはコンパイルノード数を表すSPADEコンパイラのオプション。
4ノード4スレッドでは3倍、8ノード8スレッドでは4倍の速度向上が見られる。