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君に聞いても解決策がわからなかった。
おとなしくファイル構造体で読み込むことにする。