GPUへの移植はすぐにできた(3時間程度)が、
どうも正しく動いていないようでデバッグに苦戦している。
GPUプログラムのデバッグにはnvccに-gと-Gの二つのオプションを
送ることが必要なのはわかったが、さすがにcuda-gcdには限界がある。
グラフィカルデバッグ環境を構築するため、昨日Windows7のマシンをセットアップした。
Visual StudioとNvidiaのプログラムをインストールしたがうまくいかない。
U君のクライアント環境ではうまくできたようなので、作業をお願いしたところ、
Visual Studio 2008のStandardが必要で、Expressではインストールできないらしい。
思わぬところで作業がストップしてしまった。
2010年12月21日火曜日
2010年12月10日金曜日
12/10 parser 4
とりあえず一番単純なパターンが動いた。
オートマトンを実装したら、実はスタックが必要ないことが判明してショックだ。
現在は開始タグとアトリビュート、テキストデータのみを処理器に送信している。
しかしながら、それぞれを別の関数に渡しているため問題があるかもしれない。
このあたりはXpathやXQueryなどのアプリケーション依存になりそうなので、
それを見てから考えたほうがよさそうだ。
現在の実装をPowerPointで整理したら、CPU版の最適化かGPU化を行う予定。
どちらを行えばよいか迷う。
オートマトンを実装したら、実はスタックが必要ないことが判明してショックだ。
現在は開始タグとアトリビュート、テキストデータのみを処理器に送信している。
しかしながら、それぞれを別の関数に渡しているため問題があるかもしれない。
このあたりはXpathやXQueryなどのアプリケーション依存になりそうなので、
それを見てから考えたほうがよさそうだ。
現在の実装をPowerPointで整理したら、CPU版の最適化かGPU化を行う予定。
どちらを行えばよいか迷う。
2010年12月9日木曜日
12/9 parser 3
スタックの続き。
昨日のエラーはただのスタック更新時のポインタの差し替え違いだった。
とりあえずスタックを確認しながら遷移する部分は成功。
しかし現状では見栄えが非常に悪いのでスタック関連を関数に切り分ける。
クラスにしてもいいのだが、CUDAへの移植時に面倒になりそうなのでパス。
必要な部分は全て変更を終えたのだが、動かない。
また明日頑張ろう。
オートマトンの実装が遠のいてしまった。
CUDAではSTLのスタックが使えないのがつらい。
昨日のエラーはただのスタック更新時のポインタの差し替え違いだった。
とりあえずスタックを確認しながら遷移する部分は成功。
しかし現状では見栄えが非常に悪いのでスタック関連を関数に切り分ける。
クラスにしてもいいのだが、CUDAへの移植時に面倒になりそうなのでパス。
必要な部分は全て変更を終えたのだが、動かない。
また明日頑張ろう。
オートマトンの実装が遠のいてしまった。
CUDAではSTLのスタックが使えないのがつらい。
2010年12月8日水曜日
12/8 parser 2
気がついたら23時になっていて驚いた。
Parserにスタックを使ってタグ名を監視する部分を追加したら、
Segmentation Faultを連発になり非常に困った。
スタックの実装がよろしくない模様。
GDBを使ってトレースしていたのだがさすがに面倒になってきた。
明日はVisual Studioを使ってもう一度見直してみるつもりだ。
もう一歩のところまでは動いているようなので、集中してやれば何とかなりそうだ。
タグを識別して処理を投げるところまではできているので、
オートマトンの作成や更新にも手が付けられそう。
GPU化を意識し原始的な作りにしてあるので、可読性が非常に低いのが難点だ。
インデックスを用いて文字列の比較を行っているため、
if,for,whileの巨大なお化け状態になっている。
手続き型プログラムの限界を感じる。
Parserにスタックを使ってタグ名を監視する部分を追加したら、
Segmentation Faultを連発になり非常に困った。
スタックの実装がよろしくない模様。
GDBを使ってトレースしていたのだがさすがに面倒になってきた。
明日はVisual Studioを使ってもう一度見直してみるつもりだ。
もう一歩のところまでは動いているようなので、集中してやれば何とかなりそうだ。
タグを識別して処理を投げるところまではできているので、
オートマトンの作成や更新にも手が付けられそう。
GPU化を意識し原始的な作りにしてあるので、可読性が非常に低いのが難点だ。
インデックスを用いて文字列の比較を行っているため、
if,for,whileの巨大なお化け状態になっている。
手続き型プログラムの限界を感じる。
2010年12月7日火曜日
12/7 Parser
中間も終わり、課題も1月提出のものが大体なのでようやく余裕が出てきた。
今日はParserの実装を多少進めた。
タグ数種類とそれ以外を区別して吐き出す状態まではできたが、
現在の実装で方向性が正しいかどうか疑問が出てきた。
タグの種類の解釈までを分割器に行わせるか、
その後段のオートマトン側で行うべきかが悩ましい。
今日はParserの実装を多少進めた。
タグ数種類とそれ以外を区別して吐き出す状態まではできたが、
現在の実装で方向性が正しいかどうか疑問が出てきた。
タグの種類の解釈までを分割器に行わせるか、
その後段のオートマトン側で行うべきかが悩ましい。
2010年12月3日金曜日
12/3
ブレードサーバへのOSインストールを完了。
PXEからだとディスクをうまく認識せずKernelパニックになったが、
CDから起動したらすんなりOKだった。
PXE用のイメージを新しくすべきかもしれない。
ブレードのラックへの組み付け作業中に右手親指を負傷した。
楽器が弾けるかが心配だったが、一応大丈夫だった。
しかしちょっと音が腑抜けになった気がする。ショック。
中間テストの追試が延期になった。
猶予ができたのは嬉しいが、少ししんどい。
C++のファイルストリームでファイルを読み込むと、
空白が区切り文字になってしまい嬉しくないが、
I君とU君に聞いても解決策がわからなかった。
おとなしくファイル構造体で読み込むことにする。
PXEからだとディスクをうまく認識せずKernelパニックになったが、
CDから起動したらすんなりOKだった。
PXE用のイメージを新しくすべきかもしれない。
ブレードのラックへの組み付け作業中に右手親指を負傷した。
楽器が弾けるかが心配だったが、一応大丈夫だった。
しかしちょっと音が腑抜けになった気がする。ショック。
中間テストの追試が延期になった。
猶予ができたのは嬉しいが、少ししんどい。
C++のファイルストリームでファイルを読み込むと、
空白が区切り文字になってしまい嬉しくないが、
I君とU君に聞いても解決策がわからなかった。
おとなしくファイル構造体で読み込むことにする。
2010年11月20日土曜日
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の方法なども伝えたので、次からは是非使いこなしてほしい。
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日木曜日
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ファイルでも受けられる
# 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やアーキテクチャの効率化の恩恵が如実に反映されていた。
研究の方向性も一応軌道修正がなされたのでよかった。
今後はマイクロベンチと論文読みを並行する。
講義数が多いせいもあるのだが、7教科中5教科くらいで
宿題が発生しており、かなり予定が逼迫している。
全体発表は終わったのでまだ余裕は出てきたが、早く片付けてしまいたい。
昨日数値を出したマイクロベンチだが、Fermiに乗せ変えて
再コンパイルのみを施して実行するとかなり早くなった。
全てのファイルサイズで2倍から3倍に高速化されており、
L2やアーキテクチャの効率化の恩恵が如実に反映されていた。
2010年11月1日月曜日
11/1 TSUBAME2
11月になった。寒い。
TSUBAME2がサービス開始。
登録がWebのみで済むようになり、だいぶ楽になった。
早速利用してみたが、TESLA C2050を三台搭載したインタラクティブノードに接続できた。
小規模のテストならこちらでも実行できそうだ。
TSUBAME2の利用申請の詳細は研究室内部ページに追加した。
簡単に登録できるので利用予定がなくても登録しておいて構わないと思われる。
ちなみに、pgaccelinfoというコマンドを使えばTSUBAME2のGPUを確認できる。
TSUBAME2がサービス開始。
登録がWebのみで済むようになり、だいぶ楽になった。
早速利用してみたが、TESLA C2050を三台搭載したインタラクティブノードに接続できた。
小規模のテストならこちらでも実行できそうだ。
TSUBAME2の利用申請の詳細は研究室内部ページに追加した。
簡単に登録できるので利用予定がなくても登録しておいて構わないと思われる。
ちなみに、pgaccelinfoというコマンドを使えばTSUBAME2のGPUを確認できる。
2010年10月25日月曜日
10/25 祭りの後
学際が終了した。
I君、そして研究室の皆様お疲れ様でした。
返納品があるのでそちらも忘れないでください。
今日は研究の問題点をまとめたスライドを作成した。
GPU上での処理のフローがまだまとまっていないので、
それについては今後継ぎ足す必要がある。
スライドを作り始めると細かいアーキテクチャや
数値が気になってしまい停滞するので注意しなければ。
I君、そして研究室の皆様お疲れ様でした。
返納品があるのでそちらも忘れないでください。
今日は研究の問題点をまとめたスライドを作成した。
GPU上での処理のフローがまだまとまっていないので、
それについては今後継ぎ足す必要がある。
スライドを作り始めると細かいアーキテクチャや
数値が気になってしまい停滞するので注意しなければ。
2010年10月20日水曜日
2010年10月8日金曜日
2010年9月27日月曜日
2010年9月22日水曜日
2010年9月17日金曜日
2010年9月13日月曜日
9/13 PPL2010
昨日は津田塾学園という陸の孤島にチュートリアルを聞きに行った。
Sun(Oracle)のFortress、GoogleのGO、IBMのX10の三つの説明が行われた。
どれも3時間近くにわたる長い講演だったのでなかなか体力を消費した。
Fortressの講演は英語で、言語仕様の話は少なかったのであまりよくわからなかった。
GOは並列部分に関しては共有メモリ方式からメッセージ方式にしたところが新しいようだ。
細かい言語の仕様については従来のコンパイル言語の可読性の悪さや、
型やインターフェイスの使いにくさをスクリプト言語の仕組みで補ったようなものらしい。
X10はJavaをベースにし、ヘテロな並列分散環境に対応し、
書き易さと性能の出しやすさのバランスを求めて作成されている。
Placeという概念を持ち込むことで、データのスコープなどが適切に管理できるようだ。
Placeを適切に区切ることにより、キャッシュやメモリの範囲を意識しつつ並列処理を容易に記述できる。
Javaの同期の面倒さも記述や実行方法を改めることで解決しているらしい。
上記の内容は大いに誤りを含んでいそうなので参考にしないでください。
Sun(Oracle)のFortress、GoogleのGO、IBMのX10の三つの説明が行われた。
どれも3時間近くにわたる長い講演だったのでなかなか体力を消費した。
Fortressの講演は英語で、言語仕様の話は少なかったのであまりよくわからなかった。
GOは並列部分に関しては共有メモリ方式からメッセージ方式にしたところが新しいようだ。
細かい言語の仕様については従来のコンパイル言語の可読性の悪さや、
型やインターフェイスの使いにくさをスクリプト言語の仕組みで補ったようなものらしい。
X10はJavaをベースにし、ヘテロな並列分散環境に対応し、
書き易さと性能の出しやすさのバランスを求めて作成されている。
Placeという概念を持ち込むことで、データのスコープなどが適切に管理できるようだ。
Placeを適切に区切ることにより、キャッシュやメモリの範囲を意識しつつ並列処理を容易に記述できる。
Javaの同期の面倒さも記述や実行方法を改めることで解決しているらしい。
上記の内容は大いに誤りを含んでいそうなので参考にしないでください。
2010年9月4日土曜日
2010年8月14日土曜日
2010年8月9日月曜日
8/9 今月のタスク
インターンから帰ってきました。
今月のジョブは、ComSys2010に提出した論文の英語化だ。
締め切りは9月16日です。
DASFAA 2011 Hong Kong
http://www.cintec.cuhk.edu.hk/DASFAA2011/
今月のジョブは、ComSys2010に提出した論文の英語化だ。
締め切りは9月16日です。
DASFAA 2011 Hong Kong
http://www.cintec.cuhk.edu.hk/DASFAA2011/
2010年7月25日日曜日
2010年7月21日水曜日
7/21 締め切り二日前
締め切り二日前にも関わらず悠長に実験しているのだが、
Hadoopと統合実行するとレイテンシが発散してしまう。
どうやら、Hadoopのジョブの粒度が大きすぎるせいのようだ。
Hadoopで処理するファイルは現在合計178MBのテキストファイルなのだが、
現在は1時間ごとのデータなのでたった24個のファイルしか存在せず、
一つのジョブの粒度が数メガ単位になってしまっている。
これでは思うようにジョブの切り替えが行えないので、
ファイルをsplitコマンドで1万行ごとに区切ることに。
1000行で分割すると、ファイルが多すぎてHadoopの処理が極端に遅くなるため、
今は10000行ずつ分割するパターンで試している。
1000行ずつ分割すると2000個以上のファイルができるが、10000行ずつだと225個のファイルとなる。
この実験に差し掛かる前に、Hadoopへのコマンドがうまく渡せないというエラーがあったが、
SPADEのコードをコメントアウトしていたのを忘れていただけだった。まぬけだ。
Hadoopと統合実行するとレイテンシが発散してしまう。
どうやら、Hadoopのジョブの粒度が大きすぎるせいのようだ。
Hadoopで処理するファイルは現在合計178MBのテキストファイルなのだが、
現在は1時間ごとのデータなのでたった24個のファイルしか存在せず、
一つのジョブの粒度が数メガ単位になってしまっている。
これでは思うようにジョブの切り替えが行えないので、
ファイルをsplitコマンドで1万行ごとに区切ることに。
1000行で分割すると、ファイルが多すぎてHadoopの処理が極端に遅くなるため、
今は10000行ずつ分割するパターンで試している。
1000行ずつ分割すると2000個以上のファイルができるが、10000行ずつだと225個のファイルとなる。
この実験に差し掛かる前に、Hadoopへのコマンドがうまく渡せないというエラーがあったが、
SPADEのコードをコメントアウトしていたのを忘れていただけだった。まぬけだ。
2010年7月18日日曜日
2010年7月17日土曜日
7/16 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 タプル数とレイテンシ
2010年7月5日月曜日
7/6 UDOPによる文字列探索
2010年6月30日水曜日
6/30 PuTTYの色変更
PuTTYでコンソールを表示すると、青色が見難くて悲惨なことになる。
これを解消する手段として、bashの色分け設定を変更するなどといった方法が存在する。
しかし、これではsuのときやvimでの表示などではあの忌々しい青色が復活してしまう。
これを根源的に解決する手法として、PuTTYの設定そのものを変更するという手段がある。
やり方は簡単で、PuTTYの左側のメニューから「ウィンドウ」の「色」を選び、
「変更する色を選択」から「ANSI Blue」を選び、値を赤:0、緑:0、青:187から、
赤:85、緑:85、青:187などといった適当な値に変えればよい。
この色は、bashで色を薄くした際の表示と同じなので整合性が取れると思われる。
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/
以上。
今回は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日水曜日
2010年6月20日日曜日
6/20 ICDE勉強会
ICDEによる過密スケジュールがようやく終わった。
研究が進んでいないのでがんばりたいが、他の課題も控えているため難しい。
個人的にはGenerating Code for Holistic Query Evaluationと、
例のFPGAの研究が非常に面白かった。
L2を意識してクエリを動的にコーディングしたり、
オーダーを悪化させてもハードウェアパイプラインに適した処理を
実装したほうが最終的な計算時間を短縮できたりと、
やはりハードウェアを意識した研究は楽しいと思う。
あとは、中国勢の論文が多いことにも驚かされた。
数は力なのだろうか。
研究が進んでいないのでがんばりたいが、他の課題も控えているため難しい。
個人的にはGenerating Code for Holistic Query Evaluationと、
例のFPGAの研究が非常に面白かった。
L2を意識してクエリを動的にコーディングしたり、
オーダーを悪化させてもハードウェアパイプラインに適した処理を
実装したほうが最終的な計算時間を短縮できたりと、
やはりハードウェアを意識した研究は楽しいと思う。
あとは、中国勢の論文が多いことにも驚かされた。
数は力なのだろうか。
2010年6月11日金曜日
6/11 DSMS + Hadoop
講義や論文提出などに終われ、自分の研究のアップデートが遅れてしまった。
近傍の予定
・動的負荷分散アルゴリズムの出力を用いてノード数を決定するモジュールの作成
・拡張したHadoopのJar化
・DSMSによる文字列マッチングオペレータの作成
一つ一つのジョブは軽いので、早く終わらせなければ。
近傍の予定
・動的負荷分散アルゴリズムの出力を用いてノード数を決定するモジュールの作成
・拡張したHadoopのJar化
・DSMSによる文字列マッチングオペレータの作成
一つ一つのジョブは軽いので、早く終わらせなければ。
2010年6月7日月曜日
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と同等以上の時間を要する
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
今回は正しい情報に行き当たるまでにすさまじく多くの時間を無駄にしてしまった。
ショック。
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設定ファイルの確認と更新ができる。
加えて、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日火曜日
2010年5月25日火曜日
5/25 Eclipseの謎
昨日VNCを起動してみると、何故か立ち上げっぱなしのはずのEclipseが落ちていた。
しかも、起動しようとするとファイルがLockできないと言われて停止してしまう。
Lockファイルを削除してもうまくいかなかったため、
workspace/.metadata/.logのエラーメッセージを見て設定ファイルを編集。
eclipse/configuration/config.iniにosgi.locking=noneを足せばよいようだ。
この設定を追加すると、Lockの確認が行われないため二重起動などには要注意。
Hadoopのスライドも更新しなければならないが、講義の課題も増えてきて大変。
しかも、起動しようとするとファイルが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つを諦めたほうがよさそうだ。
VLAN機能などはOFFにしているはずなのだが、やはり端の4端子がうまく繋がっていない模様。
昨日のサーバ室の大改装が終わった後、外部との接続が不可能になっていたようだが、
その原因も上記のスイッチの不具合によるものだった。
これ以上このスイッチと戦うよりは端の4つを諦めたほうがよさそうだ。
2010年4月28日水曜日
2010年4月23日金曜日
4/23 Hadoopのdebug level変更
daemon起動時の引数を変更することで変えられる。
-Dhadoop.root.logger=INFO
↓
-Dhadoop.root.logger=DEBUG
これでOK。
-Dhadoop.root.logger=INFO
↓
-Dhadoop.root.logger=DEBUG
これでOK。
2010年4月19日月曜日
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用のファイルも生成できるらしい。
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を再フォーマットする必要もありそう。
今回学んだ検証の手順として、
・最小構成からインクリメンタルに確かめる
・一度一度ログを見て動作をチェックする
ということでした。
単純なことのように見えて、常にこの二つを守るのは難しいと思い知らされました。
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にはセカンダリの名前を書き、マスターノードは実行するノードである点には注意。
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エラーなどに泣かされ、稼動までに三日もかかってしまった。
桜並木での飲酒が禁止なうえに六時以降の花見まで禁止されるらしい。
禁止するなら完全に禁止にしてしまえばいいものを、
一般人の入校規制は行われないし仮設トイレで準備されていて、完全に理解不能。
せめて入場料くらい取っていれば救いはあるものの、完全に金の無駄遣いだ。
学生や教員によるレジスタンス活動を強く希望する。
これをどのノードで実行するか迷っている。
対称計算環境を保持するには別ノードを用意するほうがいいが、電源的には微妙。
sbの8台が稼動。System Sも(きっと)実行可能。
Hadoop、Eucalyptusの実験環境となる予定。
ノードの故障やHDDのSMARTエラーなどに泣かされ、稼動までに三日もかかってしまった。
桜並木での飲酒が禁止なうえに六時以降の花見まで禁止されるらしい。
禁止するなら完全に禁止にしてしまえばいいものを、
一般人の入校規制は行われないし仮設トイレで準備されていて、完全に理解不能。
せめて入場料くらい取っていれば救いはあるものの、完全に金の無駄遣いだ。
学生や教員によるレジスタンス活動を強く希望する。
2010年3月31日水曜日
3/31 大掃除 + ネットワーク復活
今の研究室はすばらしく綺麗です。
新入生を迎え入れる準備も万端です。
長期にわたる労働のため疲労困憊です。
ルータのスイッチング電源が焼けて壊れるという残念な事件が発生したが、
現在無線ブリッジとして利用しているルータを代替に使うことで解決した。
無線LANブリッジを新たに入手したので、そちらで研究室側の無線LANをまかないます。
今日は設定を全て終わらせる体力も尽きたので明日か明後日やります。
新入生を迎え入れる準備も万端です。
長期にわたる労働のため疲労困憊です。
ルータのスイッチング電源が焼けて壊れるという残念な事件が発生したが、
現在無線ブリッジとして利用しているルータを代替に使うことで解決した。
無線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で現在利用可能。
# 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
# 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のものを流用できるため、特に触れる必要はない。
発表内容自体は卒論から変更されていないが、練習を何回か経た後なので今までで一番うまく話せたと思いました。
発表練習を指導してくださったり質疑応答を手伝っていただいた皆さんのお陰です。
ありがとうございました。
・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の書き換え時にはデーモンが実行中でないかどうか必ずチェックする必要がある。
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なので書式に注意。
KickStartファイルのFTPアクセス先を5.4に変更して実行したのだがエラーが発生した。
PXEブートに利用したvmlinuzとCentOSのイメージファイルのバージョンが違うためのようだ。
tftpで転送されるvmlinuzとinitrd.imgを5.4のものに差し替えると正常に動作した。
また、KickStartファイルでSELinuxを有効にする場合は--enforceオプションを用いる。
停止の場合は--disableなので書式に注意。
2010年2月20日土曜日
2010年2月10日水曜日
2/10 卒業論文提出完了
無事二人とも卒業論文を提出することができました。
思えば今年一年は開始早々からわからないことばかりで、
色々な方々のご助力がなければ確実に二回は留年したことでしょう。
先生をはじめとして、お隣のK研究室、T研究室、
そしてM研究室の皆さんやK先生のお陰で何とか一年を締めくくれそうです。
卒論発表もあるので、最後まで気を抜かずに頑張りたいです。
思えば今年一年は開始早々からわからないことばかりで、
色々な方々のご助力がなければ確実に二回は留年したことでしょう。
先生をはじめとして、お隣のK研究室、T研究室、
そしてM研究室の皆さんやK先生のお陰で何とか一年を締めくくれそうです。
卒論発表もあるので、最後まで気を抜かずに頑張りたいです。
2010年2月5日金曜日
2010年2月1日月曜日
2010年1月29日金曜日
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は使わないほうがよさそう。
合計の秒数が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程度になってしまう。
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倍の速度向上が見られる。
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倍の速度向上が見られる。
登録:
投稿 (Atom)