テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

(bphcuda report) bphcuda復活計画

私は日々, 何かの開発に集中していないと気が済まないジャンキーです. コードを書き, それをビルド/テスト可能な形にしてリリースすることに興味があります. 自分が愛情をこめたものであれば, ドキュメントを書くことも苦ではありません.
過去には色々作ってきましたが, 最近では, radikorecHeiankyoViewがあります. HeiankyoViewは学部研究の成果で, Python実装として復活させました. リリースというゴールを達成することは, 何とも清々しいものです. リリースすると, 使ってくれる人が現れますし話題にもなります. そこから学ぶものは多いと思います. アルゴリズムの問題を解くというのもプログラミングの楽しみではありますが, 私はむしろ, ソフトウェアを完成させることに興味があります(ただし, ユーザランドGUIには興味ありません).

私はこのところ, dm-writeboostに集中してきました. こちらについては一段落したという印象があります. 多少の改良アイデアはあるのですが, コミュニティからの返答待ちという状況であるため, フィードバック次第で事を決めるという方が良いと思います. 改良して欲しいなら取り込めという態度です.

次に何を開発していくべきかと考えた時に, 修士研究で作ったbphcudaを現在のGPUやライブラリで動かせるようにすることが楽しいかなと思っています. 3年前に比べてどの程度速くなったかということもありますし, 最新のAPIに追従していくということに価値があります. やはり, ものを作らないと, その世界のことは見えないわけです. 当事者にならなければ, メーリングリストでの議論にもついていけない. 3年前に比べて, GPUはさらに流行ってきているように思います. ストレージやデータベースへの応用も試みられています. 私は神速のストレージに興味があります. GPU(ないしメニーコア)のフラッシュ(あるいはSCM)ストレージ応用について研究開発を行っている会社があったら, 挑戦したいです. 神速は, 性能野郎の夢です.

https://github.com/akiradeveloper/bphcuda

bphcudaは流体シミュレーションライブラリです. thrustというCUDAライブラリを使って関数型チックに実装されています. thrustを使うと, 並列アルゴリズムに集中することが出来ます.
bphcudaは, 粒子の位置を入力すると, ある微小時間後の世界を計算してくれるという単純な外部仕様を公開します. 衝突は, 熱力学の応用によって近似されるため, 結果として, 実際に粒子の動きを計算するよりは遥かに速いの流体計算が可能です. 私は一つのGPUでしか実験していませんが, 理屈上はクラスタでも実験可能です. 粒子がマシン間を移動してしまうので, このオーバーヘッドがどう影響してくるかは環境によると思いますが, 転送量が大きいわけではないのできっと耐えられる程度でしょう. 工夫をすれば, 流体シミュレーションをリアルタイムで可視化することも可能だと思います. クラスタのデータを分散リアルタイム可視化することも, 原理的には可能でしょう.

以下のようなことを計画します.

  • ビルドをSConsにします. thrustが使っているビルドスクリプトを修正する形にします.
  • thrustingライブラリなど, サブプロジェクトをすべてbphcudaにマージします.
  • ベンチマークは残します. ベンチマークは実行後に, 系の状態をグラフ出力します.
  • この時点で動くかな?バージョンが離れすぎてるので後方互換捨てられてる可能性が高い.
  • ここまでやりきったあとに, 着々とリファクタリングを行って, 最新のthrustに追従します.
  • 新しいC++技術への追従によってコードがクリーンになるという効果もあるのではないかと期待.

着々と進めていこうと思います. 一週間の連続した休みが欲しい・・・. あるいは会社で開発したい. 会社, githubを見ることすら出来ない. つらぽよ