SSブログ

オレンジニュースとHandBrake for CUDA [プログラミング]

一向に更新されないRSSフィード。オレンジニュースは終わっちゃったのかな。結構好きなニュースサイトだったのですが、度々停止していたからすぐに復活するかと思っていました。技術面と雑多ネタの落差が良かった。


HandBrake for CUDA(という言い方で良いのかな?)な進捗。とりあえず、ソースコードからフレームごとのエンコードする関数を発見。多分、x264_encoder_encode()のところに、encode one pictureと書いてあるので、ここから下をCUDA化してあげればOKかな(すげー適当)。本当はGOP毎とか、GOP間とかからやった方が、並列の度合いが高くなるんでしょうが、いきなりハードルを高くしても時間がかかるだけでしょう。それに、GPUのコア数が少ない自前のカードでは、あんまり効果ないだろうし。だから、地道にピクチャーごとの8x8のブロックの処理を並列化してあげることを考えた方が近道になりそう。

今動作が確認できているのは、8x8のピクセルのエンコーディングだけなのですが、この先のスケールアップの方法は

 8x8→1フレーム→GOP内→GOP間

のようにしてあげればOKかな。CUDAと言っても、シングルスレッドで動かすのであれば、C言語で書いてあるものをそのままコピペして使えるので、渡されるデータのポインタとデータの大きさを知れば良くなっている。でも、x264の使う所全部CUDA化しないといけないのでちょっとしんどい。そうしないとCPUの使うメモリとGPUボード上のメモリを行ったり来たりする時間が必要になってしまうので、処理時間短縮のボトルネックになりかねない。というか、なっているので、それを解消するにもガッツリコーディングしないといけませんね。

あんま気合い入れずに暇な時ぼちぼちやろうっと。

タグ:GPGPU
nice!(2)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 2

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。