らくさん

2009-01-16

nukIM@S-2 ver 0.1.10

2009/01/16 ver 0.1.10

  • ATIStream対応
  • CUDAを2.1-betaから2.1に更新
  • 「トラックマットキー」フィルタの追加
  • 「合成」フィルタの合成モードに「ステンシルルミナンス」「シルエットルミナンス」を追加
  • 「マスクのみ」フィルタに「反転」オプションを追加
  • 最大ヒープサイズ(メモリ使用量)を512MBから1GBに増加

[注意] CUDAを使用する場合はCUDA2.1対応のドライバ(181.20)を使用してください。また、0.1.9まではCUDAツールキットをインストールする必要がありましたが、0.1.10から不要になりました。CUDAツールキットは削除してください。


ダウンロード: http://kuramo.ch/nukimas/


ATIStreamを使用するには
  • ATIStreamに対応したグラフィックカードが必要です。詳しくは http://ati.amd.com/technology/streamcomputing/requirements.html をご覧ください。(ここに書かれていないグラフィックカードでも動作するものがあるようですが...)
  • ATIStream対応ドライバ(Catalyst 8.12)が必要です。
  • ATIStreamを使用するには、環境設定ダイアログで「GPU支援 (ATIStream)」を有効にする必要があります。「GPU支援: 使用できません」と表示されている場合、ATIStreamが動作しない環境かATIStream対応ドライバインストールされていないと思われます。
  • 驚くほど速くなるわけではないので期待し過ぎないでください。
  • まだ、いろいろと不具合があると思います。いきなり落ちることがあるかもしれません。うまく動作しない場合はあきらめてください。

トラックマットキーは、ステンシルルミナンスとシルエットルミナンス及び以前からあったステンシルアルファ、シルエットアルファの4つの合成モードのどれかを不透明度100%で使うのと同じです。マットの種類(アルファorルミナンス)と反転の組み合わせでこれら4つのどれかになります。


最大ヒープサイズを増やしたのは、Core i7のような論理8コアもあるCPUだと512MBではメモリ不足になることがありそうなためです。ヒープメモリ以外のメモリの分も合わせると最大で1GB+αまでメモリを消費します。それ以上メモリが必要な処理をした場合、十分な空きメモリがあってもメモリ不足のエラーが発生します。


ATIStream、一応対応はしたけど微妙かも。GeForce8600GTよりスペック的にはかなり上のはずのRadeonHD4850が8600GTよりちょっとだけしか速くない。俺のコードがダメダメなせいなんだろうけど、頑張ってIL*1でも書いてもみたけどbrook+*2で書いたのと全く変わらない速度だったorz Radeon使ってる方、どのくらい速くなったかコメントくださいな。

*1:ATIStreamの中間言語、ほぼアセンブラ

*2:ATIStreamの高級言語C++の拡張

2008-12-31

GeForce8400GSでもCUDAを試してみた

うちの8600GT、少し前に欠陥があって無償修理をしたんだけど、修理終わるまでの代替として8400GSを買ったんです。そのときドライバがうまく入らなくてOSから入れ直すハメになったので、CUDA対応nukIM@S-2はまだ試してなかったんだけど、今日刺してみたら無事ドライバ入ったので試してみた。

結果、全然速くならねー。SPが8(8600GTの1/4)しかないんだからそりゃそうだろう。より速いCPUだとかえって遅くなりそうですね(うちのCPUはE8400)。

2008-12-24

nukIM@S-2 ver 0.1.8

2008/12/24 ver 0.1.8

  • 雪歩、誕生日おめでとう!*1
  • 高速化
    • 重い処理の一部をC言語で再実装したことで15%ほど高速化しました(高速化の程度は実行環境や使用素材等によって変わります)。
    • 上記と同じ箇所のCUDAへの対応も行いました(まだ実験中ですが)。GPUの種類によってはさらに20%ほど速くなります。
  • プロジェクトを閉じた後も動画ソースがnukIM@S-2内でしばらくのあいだ開いたままになる(その結果nukIM@S-2を終了しないとファイルの削除等ができなくなる)問題を修正。

ダウンロード: http://kuramo.ch/nukimas/


CUDAを使用するには
  • CUDA対応のグラフィックカードが必要です。詳しくは http://www.nvidia.co.jp/object/cuda_learn_products_jp.html をご覧ください。
  • CUDAドライバ及びCUDAツールキットが必要です。http://www.nvidia.co.jp/object/cuda_get_jp.html から入手しインストールしてください。なお、開発にはCUDA 2.1 betaを使用しました。2.0でも動くかもしれないし動かないかもしれません。
  • CUDAを使用できるのは「765comm@ndキー[RGB/グレー/マルチソース]」及び「コミュ抜き」「衣装選択画面抜き」の各フィルタです。これらフィルタの設定項目に「GPU支援(CUDA)」という項目が追加されていますので、これをチェックしてください。「GPU支援(使用不可)」と表示されている場合はCUDAが動作しない環境か、CUDAドライバまたはCUDAツールキットが適切にインストールされていないと思われます。
  • 驚くほど速くなるわけではないので期待し過ぎないでください。
  • まだ、いろいろと不具合があると思います。いきなり落ちることがあるかもしれません。うまく動作しない場合はあきらめてください。

CUDAで動いたー速くなったーって人もそうでない人もコメントいただけるとうれしいです。ちょっと無理矢理リリースしたので動かないかもなー。

*1:これを改版履歴に書きたかったために無理矢理リリースw

2008-12-21

CUDAで高速化

nukIM@S-2の速度改善のために CUDA 2.1 beta を試してみた。参考にしたのはこのあたり

 GeForceアーキテクチャとCUDAプログラミング | マイコミジャーナル

 CUDAを使う:tech.ckme.co.jp

 CUDA に触れてみる


nukIM@S-2の処理の多くは並列化しにくいんだけど、幸いなことにいちばん重い処理だけは並列化しやすいので、今でもCPUのコア数分のスレッドを作って並列に処理してる。そこをCUDA化してみたら全体で30%くらい速くなった。この前うpした美希のコミュ抜き、46分かかってたところを33分でできた。まだサンプルを見よう見まねでやってみただけなのですぐにはリリースできないけど。


GPUはGeForce8600GTを使用。9000系とかだとMP数が多いので50%くらいまでいくかも? それ以上は他の処理が占める割合が大きくなってくるので難しいと思う。比較のためとCUDAを使えない環境用を兼ねてC言語での実装もしてみたら15%ほど速くなった。Javaのままチューニングしたら5%くらい速くなった。