再配布 > NL-Means filter

「再配布/NL-Means filter」の編集履歴(バックアップ)一覧はこちら

再配布/NL-Means filter」(2010/06/07 (月) 00:10:23) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

**NL-Means filter -2008/12/13 ver.0.14 -作者:◆avitl0QFUE(nod_chip)氏 -場所:http://kishibe.dyndns.tv/index.php?%E3%83%95%E3%83%AA%E3%83%BC%E3%82%BD%E3%83%95%E3%83%88%2FNL-Means%20filter --DirectX9 最新版ランタイムが必要です。 ---「http://www.nbrains.net/php/pukiwiki/index.php?link%BD%B8%2FDirectX#Information_RunTime」からd3dx9_○○が入れられるDL先を探すのがいいかも 以下、このページにあるのは古いデータだけです。最新版は本家サイトよりダウンロードしてください。 --要 d3dx9_39.dll(ver0.12) d3dx9_39.zip&br()&s(){勝手に置いといていいのかな…。} 削除しました -要 d3dx9_37.dll(スレ43>>626-628) --DirectX End-User Runtimeに入ってる --http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3 --http://www.dll-files.com/ (43>>656) -解凍に関して #region(close) 664 :名無しさん@お腹いっぱい。:2008/04/01(火) 03:20:21 ID:qUj1rx1F0 IE7でDL→解凍→解凍した中身の拡張子をzipに変更→また解凍OK 666 :名無しさん@お腹いっぱい。:2008/04/01(火) 03:38:06 ID:l2d7LaKi0 ①DLした「nlmeans-0.01.zip」を「nlmeans-0.01.lha」にリネーム ②「nlmeans-0.01.lha」を解凍 ③できた「nlmeans-0.01」を「nlmeans-0.01.zip」にリネーム ④「nlmeans-0.01.zip」を解凍 668 :名無しさん@お腹いっぱい。:2008/04/01(火) 03:46:32 ID:l2d7LaKi0 すまん間違えた ×lha ○lzh 670 :名無しさん@お腹いっぱい。:2008/04/01(火) 03:51:22 ID:iwPbx9sf0 WinRARで何も考えずに解凍したんだが… 671 :名無しさん@お腹いっぱい。:2008/04/01(火) 04:04:00 ID:HGtYVCTI0 このサイト、zipファイルでもgzip圧縮して送る設定になってる で、IEだとgzipを解かずにそのまま保存してしまうようだ だからIEでDLした場合はまず"~.zip.gz"にリネームするのが正解 #endregion -技術的な話 #region(close) 649 :名無しさん@お腹いっぱい。:2008/04/01(火) 00:09:26 ID:3LeyuCw20 ATI系での問題だけど、浮動小数テクスチャの問題ではなくて、頂点データの問題みたい とりあえず頂点を 3DDECLUSAGE_POSITION から D3DDECLUSAGE_POSITIONT にして データもいじって、頂点シェーダをスルーするようにするとOKみたい あと、ログに memory(11,88): error X6077: texld/texldb/texldp/dsx/dsy …(略) みたいなエラーが出るので、tex2D()はtex2Dlod()に置き換える必要があるっぽい これで手元のRadeon 2600pro(XPsp2 Cat8.3)でも動作するようになって、10倍ぐらい速くなってる 657 :名無しさん@お腹いっぱい。:2008/04/01(火) 02:27:08 ID:3LeyuCw20 >>649だけど、後半のtex2DでのエラーはこちらでコンパイルしたときのDirectX SDKが古かったからっぽい 最新版では、このエラーは出ないみたいなので無視してくれ 729 :名無しさん@お腹いっぱい。:2008/04/02(水) 15:21:15 ID:JsoIWc1p0 グラボ2枚刺の環境だとどーゆー動作になるんだろうな 俺1枚だから関係ないけど a.複数枚うまく使い分けで爆速 b.どっちか優先 c.選べる d.暴走 あ、オンボ+1枚と同じと考えれば b.かな? 730 : ◆avitl0QFUE :2008/04/02(水) 16:17:17 ID:wvpKC8ro0 >>729 グラボを複数枚使用した場合、NVIDIA製GPUとATI製GPUのいずれも フレームを分割してレンダリングするそうですので、 "a"が正しいものと思われます。 自分も複数枚差しの環境を持っていないため実験することができません…。 748 :名無しさん@お腹いっぱい。:2008/04/02(水) 22:33:38 ID:Cr1VZqsj0 RADEON友の会で先ほど知って㌧できますた >>725 重みを求める際にCPUだとループを分割、GPUだと重みを2回求めているようですが、 これってまとめてはいけないものなんでしょうか? filterByCPUで言えば、sum += w;の後でvalue += r;しても問題ないように思えます。 751 : ◆avitl0QFUE :2008/04/02(水) 22:49:17 ID:wvpKC8ro0 >>748 鋭い御指摘ありがとうございます。全くもってその通りだと思います。 sum += w;value += r;でループの外でvalue /= sum;ですね。 すぐに修正させていただきます。 756 :名無しさん@お腹いっぱい。:2008/04/02(水) 23:41:36 ID:DdAeT2Er0 GPU使わなきゃこの速度が限界? なんとか高速化できないもんですかね作者サソ 757 :名無しさん@お腹いっぱい。:2008/04/03(木) 00:04:22 ID:x72Ny7aW0 できないんじゃないかなぁ。 わざわざGPU利用なんて面倒くさいことしてるってことは それだけCPUでの高速化が難しいってことだろうし。 758 :名無しさん@お腹いっぱい。:2008/04/03(木) 00:17:59 ID:mfAIaCq50 上でavitl0QFUE氏も言われてるけど GPUの強みは超並列性だしね CPUもICP向上とマルチコア化でがんばってるけど 尖った部位に対してはGPUに完敗なんだよね 1個のシェーダーユニットがPenIIIの1GHz相当らしいんだけど 今のCore2DuoとPenIIIを比較すると性能差は…10-15倍で まぁそれだけでもかなりCore2Duoは速くなったと言えるんだけど それでも128個のPenIIIには適わないと言うかなんと言うか 763 :名無しさん@お腹いっぱい。:2008/04/03(木) 01:01:46 ID:GnQB4GDk0 CPUは1個ないし小数の延々と続く長くて面倒くさい計算をこなすのが得意、 GPUは単純な計算を同時に大量にこなすのが得意。 GPUでよく言うシェーダーってのが一つ一つ独立したCPUみたいなもんで それが最近のハイエンドグラボにはとか256とか320基くらいついてる。 だからノイズ除去やリサイズといったピクセル単位で行うようなフィルタは GPUによって著しい高速化が望める。とはいえシェーダー1個だけでは 今のCPUに比べたら大した性能ではない(上でおっしゃってるPenIII1GHzとか) だからフレーム単位で処理しなくてはいけないようなフィルタにはGPU処理は意味がない。 765 :名無しさん@お腹いっぱい。:2008/04/03(木) 01:21:44 ID:JL/uM6UO0 >>763 http://pc.watch.impress.co.jp/docs/2007/0326/kaigai346.htm 766 :名無しさん@お腹いっぱい。:2008/04/03(木) 01:57:19 ID:tlKLcxH30 >>751 合っててほっとしました。 見よう見まねでBrook+で実装してみましたが、範囲16 分散50 解像度1024x768、 HD3850 256MBで1フレーム1.4秒でした。 正確な計測が出来ないのでストップウォッチ計測ですが、GLSLと比べて相当長い(2倍から3倍程度)です。 どうやらピクセルシェーダで実装できないような複雑な処理以外ではいらない子のようですorz 生成されたコードを見るとBrook+のコンパイラがヘタレなんじゃないかとも思うので後で直接CALで書いてやってみます。 # GeForce9600GTならCUDAが使えるので気になるところ 767 :名無しさん@お腹いっぱい。:2008/04/03(木) 02:00:20 ID:uU/SEQKH0 CUDAならサンプルにそのまま同じのがあるようだが 768 :名無しさん@お腹いっぱい。:2008/04/03(木) 02:36:55 ID:tlKLcxH30 >>767 そのまま同じのというのはBrook+のNLM_DenoiseとCUDAのimageDenoising_nlm2_kernel.cuのことでしょうか? NLM_DenoiseはNLM2を移植してるみたいですが、何故か2パスに分けて処理していて 別物に化けてしまってるような気がしてならないんですがどうなんでしょう。 NLM_Denoiseは◆avitl0QFUE氏のと実装が違ったのであまり見てません。 769 :名無しさん@お腹いっぱい。:2008/04/03(木) 02:57:28 ID:uU/SEQKH0 付属しているpdfを読む限り、NLM2はもとのNLMの処理をかなり省略して高速化したもの、らしい。 NLMの方が◆avitl0QFUE氏の実装に近いんだけど、近傍ピクセルの範囲が可変なのと、 ピクセルデータの距離をチャンネル個別か3チャンネルすべてから求めるか、が違っているように見える。 試しにBrook+もDLしてみたけど、サンプル内にNLM2がそのままあるようですね。 772 :名無しさん@お腹いっぱい。:2008/04/03(木) 10:48:34 ID:CLpm/YF10 >>769 そういうことでしたか。 CUDAの読み方が良くわからなかったのでソースをあまり理解できてませんでした。 しかもPDFがあることに気づかなかったorz 797 :名無しさん@お腹いっぱい。:2008/04/03(木) 23:31:57 ID:CLpm/YF10 filterByCPUをSSE2でベクトル化 範囲3 分散50 1024x786で34.157秒 -> 22.812秒 3倍はもとより2倍にも届かないorz 807 :名無しさん@お腹いっぱい。:2008/04/04(金) 05:23:21 ID:/cfJ/uKV0 ググって調べたのですが情報が少なかったので質問させてください。 NL-Meansは時間軸のフィルタでよろしいのでしょうか? 809 :名無しさん@お腹いっぱい。:2008/04/04(金) 09:29:31 ID:dJ09Z79w0 >>797 CPUによっても随分違うよ。 Pen4は凄い効いたけどCore2Duoは余り伸びないとか。 多分SSE2化してない状態での処理能力が高いってことだけど。 unsharpMTなんか2倍にもならなかったもの。 811 :名無しさん@お腹いっぱい。:2008/04/04(金) 10:23:01 ID:edq2yX560 >>807 時間軸は一切関係ないみたいです。 移動平均フィルタの重みの決め方が特殊な代物というかなんというか。 Wikipediaによるとそれは移動平均とは言わないらしいですが。 注目点とその周囲(設定ダイアログの「範囲」)の参照点の9近傍のSSD(Sum of Squared Difference)を取っ て、 exp(-SSD/h^2)を重みとして用いて平均を取るのが◆avitl0QFUEの実装です。( h = 10^(「分散」/22) ) NVIDIAの実装だと注目点と参照点の距離を範囲の面積で正規化したものをexpの引数に加えていたり、 9近傍ではなく49近傍だったりするようです。 >>809 コンパイラの吐いたコードを見てみたら毎回メモリに書き戻す酷いコードでしたorz VC8では組み込み関数はあまりよろしくないようです。 インラインアセンブラでやってみます。 870 :名無しさん@お腹いっぱい。:2008/04/05(土) 00:06:48 ID:Bpvdt13/0 filterByCPUをSSE2でベクトル化続編 範囲3 分散50 1024x786で34.157秒 -> 22.812秒 -> 17.262秒 組み込み関数で書いた場合の注意点がわかったのでちょっと見直し。大体2倍達成。 インラインアセンブラ使ってカチカチに詰めれば13秒くらいまでいけるかな。 まぁみんなGPU使ってるよねorz 871 :名無しさん@お腹いっぱい。:2008/04/05(土) 00:09:40 ID:G6NOAvDG0 CPU側の処理を最適化できたなら その成果は素晴らしいフィードバックになると思うぞ 872 :名無しさん@お腹いっぱい。:2008/04/05(土) 00:14:32 ID:yGreZDhq0 >>871 もうちょっと自慢できるくらい速くなったら◆avitl0QFUE氏に投げてみるつもりです。 そういや>>811で「氏」が抜けてしまってたorzごめんなさい 873 :名無しさん@お腹いっぱい。:2008/04/05(土) 00:18:05 ID:s5V3zdcn0 CPUルーチンが最適化してけばGPUと並列処理てのも出来そうだな。 876 :名無しさん@お腹いっぱい。:2008/04/05(土) 00:38:25 ID:yGreZDhq0 >>873 今のところ速度が違いすぎて足引っ張りますよ。 もっとCPU側に分があればこういうのみたいに出来るんでしょうけれども。 http://aaa.jspeed.jp/~ohshima/cgi-bin/fswiki/wiki.cgi?page=GPUPC%A5%D7%A5%ED%A5%B8%A5%A7%A5%AF%A5%C8FD%A4%CB%A4%C4%A4%A4%A4%C6 本家のGPUでの速度が気になって使ってみたらCPUでも11秒で終了したんで 首を捻りつつコンパイルオプション変えてみました。 CPU版 11.124秒 SSE2版 5.796秒 余計なオプション指定しなきゃよかったorz いずれにせよ約2倍は変わらないのでインラインアセンブラに手を出します。 881 :名無しさん@お腹いっぱい。:2008/04/05(土) 03:45:07 ID:5I6j+jUt0 >>870 流石に吐き出した後のをきちんと見直してないから同じような問題あるかも。 良かったら注意点を教えてもらえると嬉しかったり。 (動的アセンブラなんぞに手を出す前にアセンブラ読み直せと怒られそうだ) 901 :名無しさん@お腹いっぱい。:2008/04/05(土) 13:34:13 ID:yGreZDhq0 よーしパパ日記レスしちゃうぞー filterByCPUをSSE2でベクトル化続続編 範囲3 分散50 1024x786で11.124秒 -> 5.796秒 -> 4.563秒(4.515秒) 指数関数のベクトル化。精度を犠牲にすればカッコ内までいけました。 >>881 S式のごとくネストして書かないとメモリへの書き戻しだらけになりました。 const __m128等に代入しても最適化してくれないこともありました。 VC8は結果をXMMレジスタからすぐに追い出したがる傾向があるようです。 912 :名無しさん@お腹いっぱい。:2008/04/05(土) 19:30:15 ID:yGreZDhq0 また又filterByCPUをSSE2でベクトル化 範囲3 分散50 1024x786で11.124秒 -> 5.796秒 -> 4.563秒(4.515秒) -> 3.047秒(2.89秒) インラインアセンブラ使ってないのにここまできちゃった・・・これ以上速くできる気がしないorz コンパイラさん馬鹿にしてごめんなさい >>881 >>901で書いたことはちょっと嘘でした。 時々ボケますがconstつければ基本的には綺麗なコードを吐いてくれます。 ttp://www.uploda.net/cgi/uploader4/index.php?dlpas_id=0000029447.udn 「AviUtl」 913 :名無しさん@お腹いっぱい。:2008/04/05(土) 19:36:38 ID:yGreZDhq0 連レススマソ。一部消し忘れ修正 ttp://ud.gs/40gwe 927 :名無しさん@お腹いっぱい。:2008/04/05(土) 23:08:46 ID:5I6j+jUt0 >>912 有難うございます。 昔の癖もあってコーディング方針に違いがありそうですが参考になりました。 一応ピンポイントで吐いたの読んでみた所大丈夫そうでした。 逆にxmmに格納する段が少々不可思議でしたけど。 ◆avitl0QFUE 2008-04-06 (日) 00:42:05 >>912様 SSE2版の開発御疲れ様です。そしてありがとうございます。 filterBySSE2をこちらのコードに統合してもよろしいでしょうか? また、その際に著作権表記はいかがいたしましょうか? 965 :912:2008/04/06(日) 11:41:42 ID:mJD0I+GO0 >>◆avitl0QFUE氏 統合は願ったり叶ったりなんですが、著作権表記が難しくてよくわかりません。 本当は煮るなり焼くなり好きにしてくださいと言いたい所なんですが、そもそも>>913が Apache License 2.0の派生物なのに、ファイル先頭におまじないをコピペしてなかったり LICENSE-2.0もNOTICEもいれずに配布しちゃったからライセンス違反になってますよね。 一度Apache License 2.0に添って体裁を整えてから再アップした方がいいんでしょうか? 985 :名無しさん@お腹いっぱい。:2008/04/06(日) 14:45:12 ID:b/RHz51y0 二番煎じながら、NLMフィルタのSSE2化に挑戦してみました ttp://uproda.2ch-library.com/src/lib019482.zip.shtml が、やっぱりGPUに勝てそうにないので、これ以上やる気は出ないです ところで、Ver0.05での変更点 > GPU→CPUの転送方法を若干変更した というのが気になります。これで速度は向上しました? >>◆avitl0QFUE氏 ◆avitl0QFUE 2008-04-06 (日) 15:41:22 >>912様 確かにライセンスに違反していますね…。 体裁を整えてからのアップロードをお願いできますでしょうか? 再アップロードが完了次第統合させていただきます。 >>985様 ビデオメモリの節約を行いました。 速度は特に変化しませんでした。 (以下、スレ44) 20 :名無しさん@お腹いっぱい。:2008/04/06(日) 22:57:36 ID:mJD0I+GO0 >>◆avitl0QFUE氏 前スレ985氏のがとても速かったのでもうちょっと工夫した上でアップしようと思います。 35 :名無しさん@お腹いっぱい。:2008/04/07(月) 10:01:23 ID:Xq4utgrY0 新・filterByCPUをSSE2でベクトル化 範囲3 分散50 1024x786で11.124秒 -> 5.796秒 -> 4.563秒(4.515秒) -> 3.047秒(2.89秒) -> 0.922秒(0.735秒) 前スレ985氏の実装を参考にしてみました。 55 :名無しさん@お腹いっぱい。:2008/04/07(月) 17:35:31 ID:A5grIjQf0 >>35 そのフィルターをいただくことはできないでしょうか? NL-Means filterだと範囲1 分散60とかできれいになるのですが、他のフィルタあわせて4時間とかのエンコになります。 時間がかかりすぎてもあれなので、できれば35さんのフィルターも試してみたいのです。 まぁVGA買い換えれば、NL-Means filterの方がいいんだろうけど・・・ 61 :名無しさん@お腹いっぱい。:2008/04/07(月) 23:41:31 ID:Xq4utgrY0 ニュー・filterByCPUをSSE2でベクトル化 範囲3 分散50 1024x786で11.124秒 -> 5.796秒 -> 4.563秒(4.515秒) -> 3.047秒(2.89秒) -> 0.922秒(0.735秒) -> 0.797秒(0.672秒) Brook+で実装した速度に追いつきそう・・・ 一応次で最終版にして◆avitl0QFUE氏に渡します。多分明後日くらいまでに。 >>55 ということで、もう少し待ってください。 2点ほど改善点が思いついているので。 64 :名無しさん@お腹いっぱい。:2008/04/08(火) 09:34:06 ID:iX+gZ6XA0 NL使ってるときにGPUがどれぐらい動いてるのか知りたいんだけど CPUメーターみたいなソフト知らない? GPU用のさ。 65 :名無しさん@お腹いっぱい。:2008/04/08(火) 09:40:05 ID:bUqkhlI/0 Riva Tuner 66 :名無しさん@お腹いっぱい。:2008/04/08(火) 09:56:52 ID:68VaT2s/0 >65 温度くらいしかわからないんじゃ? 67 :名無しさん@お腹いっぱい。:2008/04/08(火) 10:08:00 ID:bUqkhlI/0 ttp://www.imgup.org/iup589623.png.html 167 :名無しさん@お腹いっぱい。:2008/04/11(金) 00:29:35 ID:gFXglMzr0 NL-Means使用でGPUがどれぐらい頑張ってるのかパーセント表示で 見てみたいんだけど、CPUメーターのようなGPUメーターソフトありませんか? 168 :名無しさん@お腹いっぱい。:2008/04/11(金) 00:31:55 ID:tIA3O29K0 RADEONのHDシリーズならCCCのGPU Activityから使用率が見れる 169 :名無しさん@お腹いっぱい。:2008/04/11(金) 01:56:35 ID:YUp/gufA0 >>65- 206 :名無しさん@お腹いっぱい。:2008/04/12(土) 00:44:44 ID:R+adG0GpO filterByCpuをSSE2でベクトル化予告編 気がつけば期日を過ぎてましたorz 0.06に合わせてクラス作ったり時間範囲対応させたりしていたら バグが出たり書き込み規制に巻き込まれたりと遅れております。 せばいいだろ 242 :名無しさん@お腹いっぱい。:2008/04/13(日) 00:40:40 ID:fm4mEKK8O 痛快・filterByCPUをSSE2でベクトル化 範囲3 分散50 1024x786で11.124秒 -> 5.796秒 -> 4.563秒(4.515秒) -> 3.047秒(2.89秒) -> 0.922秒(0.735秒) -> 0.797秒(0.672秒) -> 0.75秒(0.609秒) get_ycp_filtering_cache_exの領域に7ピクセル以上の余裕が存在するのかわからなかったんですがまぁ気にせずに。 どこどこを読み込み中にアクセス違反が起きましたとか言われたら少し変えないといけません。 ttp://ud.gs/40h5r 243 :名無しさん@お腹いっぱい。:2008/04/13(日) 00:41:55 ID:fm4mEKK8O パス書き忘れ AviUtl 271 :名無しさん@お腹いっぱい。:2008/04/13(日) 17:09:19 ID:fm4mEKK8O バグ直しました。ご迷惑をおかけしました。 ttp://ud.gs/40h6d #endregion -42>>985氏? --http://www.geocities.jp/mosd7500/aviu.html ----- - グラボなんて意識したこと無いぜ!な自分は、CPUでの高速化にwktk -- 41991 (2008-04-06 19:34:35) - d3dx9_??.dll は単体じゃ配布できません。MSのライセンス違反になります。ふつーに最新版のランタイムをインストールした方がいいと思う -- 名無しさん (2009-05-12 07:02:43) - ご指摘ありがとうございます。ファイルは削除致しました。 -- 41991 (2009-06-26 03:50:00) #comment
**NL-Means filter -2008/12/13 ver.0.14 -作者:◆avitl0QFUE(nod_chip)氏 -場所:http://kishibe.dyndns.tv/index.php?%E3%83%95%E3%83%AA%E3%83%BC%E3%82%BD%E3%83%95%E3%83%88%2FNL-Means%20filter --DirectX9 最新版ランタイムが必要です。 ---「http://www.nbrains.net/php/pukiwiki/index.php?link%BD%B8%2FDirectX#Information_RunTime」からd3dx9_○○が入れられるDL先を探すのがいいかも 以下、このページにあるのは古いデータだけです。最新版は本家サイトよりダウンロードしてください。 --要 d3dx9_39.dll(ver0.12) d3dx9_39.zip&br()&s(){勝手に置いといていいのかな…。} 削除しました -要 d3dx9_37.dll(スレ43>>626-628) --DirectX End-User Runtimeに入ってる --http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3 --http://www.dll-files.com/ (43>>656) -解凍に関して #region(close) 664 :名無しさん@お腹いっぱい。:2008/04/01(火) 03:20:21 ID:qUj1rx1F0 IE7でDL→解凍→解凍した中身の拡張子をzipに変更→また解凍OK 666 :名無しさん@お腹いっぱい。:2008/04/01(火) 03:38:06 ID:l2d7LaKi0 ①DLした「nlmeans-0.01.zip」を「nlmeans-0.01.lha」にリネーム ②「nlmeans-0.01.lha」を解凍 ③できた「nlmeans-0.01」を「nlmeans-0.01.zip」にリネーム ④「nlmeans-0.01.zip」を解凍 668 :名無しさん@お腹いっぱい。:2008/04/01(火) 03:46:32 ID:l2d7LaKi0 すまん間違えた ×lha ○lzh 670 :名無しさん@お腹いっぱい。:2008/04/01(火) 03:51:22 ID:iwPbx9sf0 WinRARで何も考えずに解凍したんだが… 671 :名無しさん@お腹いっぱい。:2008/04/01(火) 04:04:00 ID:HGtYVCTI0 このサイト、zipファイルでもgzip圧縮して送る設定になってる で、IEだとgzipを解かずにそのまま保存してしまうようだ だからIEでDLした場合はまず"~.zip.gz"にリネームするのが正解 #endregion -技術的な話 #region(close) 649 :名無しさん@お腹いっぱい。:2008/04/01(火) 00:09:26 ID:3LeyuCw20 ATI系での問題だけど、浮動小数テクスチャの問題ではなくて、頂点データの問題みたい とりあえず頂点を 3DDECLUSAGE_POSITION から D3DDECLUSAGE_POSITIONT にして データもいじって、頂点シェーダをスルーするようにするとOKみたい あと、ログに memory(11,88): error X6077: texld/texldb/texldp/dsx/dsy …(略) みたいなエラーが出るので、tex2D()はtex2Dlod()に置き換える必要があるっぽい これで手元のRadeon 2600pro(XPsp2 Cat8.3)でも動作するようになって、10倍ぐらい速くなってる 657 :名無しさん@お腹いっぱい。:2008/04/01(火) 02:27:08 ID:3LeyuCw20 >>649だけど、後半のtex2DでのエラーはこちらでコンパイルしたときのDirectX SDKが古かったからっぽい 最新版では、このエラーは出ないみたいなので無視してくれ 729 :名無しさん@お腹いっぱい。:2008/04/02(水) 15:21:15 ID:JsoIWc1p0 グラボ2枚刺の環境だとどーゆー動作になるんだろうな 俺1枚だから関係ないけど a.複数枚うまく使い分けで爆速 b.どっちか優先 c.選べる d.暴走 あ、オンボ+1枚と同じと考えれば b.かな? 730 : ◆avitl0QFUE :2008/04/02(水) 16:17:17 ID:wvpKC8ro0 >>729 グラボを複数枚使用した場合、NVIDIA製GPUとATI製GPUのいずれも フレームを分割してレンダリングするそうですので、 "a"が正しいものと思われます。 自分も複数枚差しの環境を持っていないため実験することができません…。 748 :名無しさん@お腹いっぱい。:2008/04/02(水) 22:33:38 ID:Cr1VZqsj0 RADEON友の会で先ほど知って㌧できますた >>725 重みを求める際にCPUだとループを分割、GPUだと重みを2回求めているようですが、 これってまとめてはいけないものなんでしょうか? filterByCPUで言えば、sum += w;の後でvalue += r;しても問題ないように思えます。 751 : ◆avitl0QFUE :2008/04/02(水) 22:49:17 ID:wvpKC8ro0 >>748 鋭い御指摘ありがとうございます。全くもってその通りだと思います。 sum += w;value += r;でループの外でvalue /= sum;ですね。 すぐに修正させていただきます。 756 :名無しさん@お腹いっぱい。:2008/04/02(水) 23:41:36 ID:DdAeT2Er0 GPU使わなきゃこの速度が限界? なんとか高速化できないもんですかね作者サソ 757 :名無しさん@お腹いっぱい。:2008/04/03(木) 00:04:22 ID:x72Ny7aW0 できないんじゃないかなぁ。 わざわざGPU利用なんて面倒くさいことしてるってことは それだけCPUでの高速化が難しいってことだろうし。 758 :名無しさん@お腹いっぱい。:2008/04/03(木) 00:17:59 ID:mfAIaCq50 上でavitl0QFUE氏も言われてるけど GPUの強みは超並列性だしね CPUもICP向上とマルチコア化でがんばってるけど 尖った部位に対してはGPUに完敗なんだよね 1個のシェーダーユニットがPenIIIの1GHz相当らしいんだけど 今のCore2DuoとPenIIIを比較すると性能差は…10-15倍で まぁそれだけでもかなりCore2Duoは速くなったと言えるんだけど それでも128個のPenIIIには適わないと言うかなんと言うか 763 :名無しさん@お腹いっぱい。:2008/04/03(木) 01:01:46 ID:GnQB4GDk0 CPUは1個ないし小数の延々と続く長くて面倒くさい計算をこなすのが得意、 GPUは単純な計算を同時に大量にこなすのが得意。 GPUでよく言うシェーダーってのが一つ一つ独立したCPUみたいなもんで それが最近のハイエンドグラボにはとか256とか320基くらいついてる。 だからノイズ除去やリサイズといったピクセル単位で行うようなフィルタは GPUによって著しい高速化が望める。とはいえシェーダー1個だけでは 今のCPUに比べたら大した性能ではない(上でおっしゃってるPenIII1GHzとか) だからフレーム単位で処理しなくてはいけないようなフィルタにはGPU処理は意味がない。 765 :名無しさん@お腹いっぱい。:2008/04/03(木) 01:21:44 ID:JL/uM6UO0 >>763 http://pc.watch.impress.co.jp/docs/2007/0326/kaigai346.htm 766 :名無しさん@お腹いっぱい。:2008/04/03(木) 01:57:19 ID:tlKLcxH30 >>751 合っててほっとしました。 見よう見まねでBrook+で実装してみましたが、範囲16 分散50 解像度1024x768、 HD3850 256MBで1フレーム1.4秒でした。 正確な計測が出来ないのでストップウォッチ計測ですが、GLSLと比べて相当長い(2倍から3倍程度)です。 どうやらピクセルシェーダで実装できないような複雑な処理以外ではいらない子のようですorz 生成されたコードを見るとBrook+のコンパイラがヘタレなんじゃないかとも思うので後で直接CALで書いてやってみます。 # GeForce9600GTならCUDAが使えるので気になるところ 767 :名無しさん@お腹いっぱい。:2008/04/03(木) 02:00:20 ID:uU/SEQKH0 CUDAならサンプルにそのまま同じのがあるようだが 768 :名無しさん@お腹いっぱい。:2008/04/03(木) 02:36:55 ID:tlKLcxH30 >>767 そのまま同じのというのはBrook+のNLM_DenoiseとCUDAのimageDenoising_nlm2_kernel.cuのことでしょうか? NLM_DenoiseはNLM2を移植してるみたいですが、何故か2パスに分けて処理していて 別物に化けてしまってるような気がしてならないんですがどうなんでしょう。 NLM_Denoiseは◆avitl0QFUE氏のと実装が違ったのであまり見てません。 769 :名無しさん@お腹いっぱい。:2008/04/03(木) 02:57:28 ID:uU/SEQKH0 付属しているpdfを読む限り、NLM2はもとのNLMの処理をかなり省略して高速化したもの、らしい。 NLMの方が◆avitl0QFUE氏の実装に近いんだけど、近傍ピクセルの範囲が可変なのと、 ピクセルデータの距離をチャンネル個別か3チャンネルすべてから求めるか、が違っているように見える。 試しにBrook+もDLしてみたけど、サンプル内にNLM2がそのままあるようですね。 772 :名無しさん@お腹いっぱい。:2008/04/03(木) 10:48:34 ID:CLpm/YF10 >>769 そういうことでしたか。 CUDAの読み方が良くわからなかったのでソースをあまり理解できてませんでした。 しかもPDFがあることに気づかなかったorz 797 :名無しさん@お腹いっぱい。:2008/04/03(木) 23:31:57 ID:CLpm/YF10 filterByCPUをSSE2でベクトル化 範囲3 分散50 1024x786で34.157秒 -> 22.812秒 3倍はもとより2倍にも届かないorz 807 :名無しさん@お腹いっぱい。:2008/04/04(金) 05:23:21 ID:/cfJ/uKV0 ググって調べたのですが情報が少なかったので質問させてください。 NL-Meansは時間軸のフィルタでよろしいのでしょうか? 809 :名無しさん@お腹いっぱい。:2008/04/04(金) 09:29:31 ID:dJ09Z79w0 >>797 CPUによっても随分違うよ。 Pen4は凄い効いたけどCore2Duoは余り伸びないとか。 多分SSE2化してない状態での処理能力が高いってことだけど。 unsharpMTなんか2倍にもならなかったもの。 811 :名無しさん@お腹いっぱい。:2008/04/04(金) 10:23:01 ID:edq2yX560 >>807 時間軸は一切関係ないみたいです。 移動平均フィルタの重みの決め方が特殊な代物というかなんというか。 Wikipediaによるとそれは移動平均とは言わないらしいですが。 注目点とその周囲(設定ダイアログの「範囲」)の参照点の9近傍のSSD(Sum of Squared Difference)を取っ て、 exp(-SSD/h^2)を重みとして用いて平均を取るのが◆avitl0QFUEの実装です。( h = 10^(「分散」/22) ) NVIDIAの実装だと注目点と参照点の距離を範囲の面積で正規化したものをexpの引数に加えていたり、 9近傍ではなく49近傍だったりするようです。 >>809 コンパイラの吐いたコードを見てみたら毎回メモリに書き戻す酷いコードでしたorz VC8では組み込み関数はあまりよろしくないようです。 インラインアセンブラでやってみます。 870 :名無しさん@お腹いっぱい。:2008/04/05(土) 00:06:48 ID:Bpvdt13/0 filterByCPUをSSE2でベクトル化続編 範囲3 分散50 1024x786で34.157秒 -> 22.812秒 -> 17.262秒 組み込み関数で書いた場合の注意点がわかったのでちょっと見直し。大体2倍達成。 インラインアセンブラ使ってカチカチに詰めれば13秒くらいまでいけるかな。 まぁみんなGPU使ってるよねorz 871 :名無しさん@お腹いっぱい。:2008/04/05(土) 00:09:40 ID:G6NOAvDG0 CPU側の処理を最適化できたなら その成果は素晴らしいフィードバックになると思うぞ 872 :名無しさん@お腹いっぱい。:2008/04/05(土) 00:14:32 ID:yGreZDhq0 >>871 もうちょっと自慢できるくらい速くなったら◆avitl0QFUE氏に投げてみるつもりです。 そういや>>811で「氏」が抜けてしまってたorzごめんなさい 873 :名無しさん@お腹いっぱい。:2008/04/05(土) 00:18:05 ID:s5V3zdcn0 CPUルーチンが最適化してけばGPUと並列処理てのも出来そうだな。 876 :名無しさん@お腹いっぱい。:2008/04/05(土) 00:38:25 ID:yGreZDhq0 >>873 今のところ速度が違いすぎて足引っ張りますよ。 もっとCPU側に分があればこういうのみたいに出来るんでしょうけれども。 http://aaa.jspeed.jp/~ohshima/cgi-bin/fswiki/wiki.cgi?page=GPUPC%A5%D7%A5%ED%A5%B8%A5%A7%A5%AF%A5%C8FD%A4%CB%A4%C4%A4%A4%A4%C6 本家のGPUでの速度が気になって使ってみたらCPUでも11秒で終了したんで 首を捻りつつコンパイルオプション変えてみました。 CPU版 11.124秒 SSE2版 5.796秒 余計なオプション指定しなきゃよかったorz いずれにせよ約2倍は変わらないのでインラインアセンブラに手を出します。 881 :名無しさん@お腹いっぱい。:2008/04/05(土) 03:45:07 ID:5I6j+jUt0 >>870 流石に吐き出した後のをきちんと見直してないから同じような問題あるかも。 良かったら注意点を教えてもらえると嬉しかったり。 (動的アセンブラなんぞに手を出す前にアセンブラ読み直せと怒られそうだ) 901 :名無しさん@お腹いっぱい。:2008/04/05(土) 13:34:13 ID:yGreZDhq0 よーしパパ日記レスしちゃうぞー filterByCPUをSSE2でベクトル化続続編 範囲3 分散50 1024x786で11.124秒 -> 5.796秒 -> 4.563秒(4.515秒) 指数関数のベクトル化。精度を犠牲にすればカッコ内までいけました。 >>881 S式のごとくネストして書かないとメモリへの書き戻しだらけになりました。 const __m128等に代入しても最適化してくれないこともありました。 VC8は結果をXMMレジスタからすぐに追い出したがる傾向があるようです。 912 :名無しさん@お腹いっぱい。:2008/04/05(土) 19:30:15 ID:yGreZDhq0 また又filterByCPUをSSE2でベクトル化 範囲3 分散50 1024x786で11.124秒 -> 5.796秒 -> 4.563秒(4.515秒) -> 3.047秒(2.89秒) インラインアセンブラ使ってないのにここまできちゃった・・・これ以上速くできる気がしないorz コンパイラさん馬鹿にしてごめんなさい >>881 >>901で書いたことはちょっと嘘でした。 時々ボケますがconstつければ基本的には綺麗なコードを吐いてくれます。 ttp://www.uploda.net/cgi/uploader4/index.php?dlpas_id=0000029447.udn 「AviUtl」 913 :名無しさん@お腹いっぱい。:2008/04/05(土) 19:36:38 ID:yGreZDhq0 連レススマソ。一部消し忘れ修正 ttp://ud.gs/40gwe 927 :名無しさん@お腹いっぱい。:2008/04/05(土) 23:08:46 ID:5I6j+jUt0 >>912 有難うございます。 昔の癖もあってコーディング方針に違いがありそうですが参考になりました。 一応ピンポイントで吐いたの読んでみた所大丈夫そうでした。 逆にxmmに格納する段が少々不可思議でしたけど。 ◆avitl0QFUE 2008-04-06 (日) 00:42:05 >>912様 SSE2版の開発御疲れ様です。そしてありがとうございます。 filterBySSE2をこちらのコードに統合してもよろしいでしょうか? また、その際に著作権表記はいかがいたしましょうか? 965 :912:2008/04/06(日) 11:41:42 ID:mJD0I+GO0 >>◆avitl0QFUE氏 統合は願ったり叶ったりなんですが、著作権表記が難しくてよくわかりません。 本当は煮るなり焼くなり好きにしてくださいと言いたい所なんですが、そもそも>>913が Apache License 2.0の派生物なのに、ファイル先頭におまじないをコピペしてなかったり LICENSE-2.0もNOTICEもいれずに配布しちゃったからライセンス違反になってますよね。 一度Apache License 2.0に添って体裁を整えてから再アップした方がいいんでしょうか? 985 :名無しさん@お腹いっぱい。:2008/04/06(日) 14:45:12 ID:b/RHz51y0 二番煎じながら、NLMフィルタのSSE2化に挑戦してみました ttp://uproda.2ch-library.com/src/lib019482.zip.shtml が、やっぱりGPUに勝てそうにないので、これ以上やる気は出ないです ところで、Ver0.05での変更点 > GPU→CPUの転送方法を若干変更した というのが気になります。これで速度は向上しました? >>◆avitl0QFUE氏 ◆avitl0QFUE 2008-04-06 (日) 15:41:22 >>912様 確かにライセンスに違反していますね…。 体裁を整えてからのアップロードをお願いできますでしょうか? 再アップロードが完了次第統合させていただきます。 >>985様 ビデオメモリの節約を行いました。 速度は特に変化しませんでした。 (以下、スレ44) 20 :名無しさん@お腹いっぱい。:2008/04/06(日) 22:57:36 ID:mJD0I+GO0 >>◆avitl0QFUE氏 前スレ985氏のがとても速かったのでもうちょっと工夫した上でアップしようと思います。 35 :名無しさん@お腹いっぱい。:2008/04/07(月) 10:01:23 ID:Xq4utgrY0 新・filterByCPUをSSE2でベクトル化 範囲3 分散50 1024x786で11.124秒 -> 5.796秒 -> 4.563秒(4.515秒) -> 3.047秒(2.89秒) -> 0.922秒(0.735秒) 前スレ985氏の実装を参考にしてみました。 55 :名無しさん@お腹いっぱい。:2008/04/07(月) 17:35:31 ID:A5grIjQf0 >>35 そのフィルターをいただくことはできないでしょうか? NL-Means filterだと範囲1 分散60とかできれいになるのですが、他のフィルタあわせて4時間とかのエンコになります。 時間がかかりすぎてもあれなので、できれば35さんのフィルターも試してみたいのです。 まぁVGA買い換えれば、NL-Means filterの方がいいんだろうけど・・・ 61 :名無しさん@お腹いっぱい。:2008/04/07(月) 23:41:31 ID:Xq4utgrY0 ニュー・filterByCPUをSSE2でベクトル化 範囲3 分散50 1024x786で11.124秒 -> 5.796秒 -> 4.563秒(4.515秒) -> 3.047秒(2.89秒) -> 0.922秒(0.735秒) -> 0.797秒(0.672秒) Brook+で実装した速度に追いつきそう・・・ 一応次で最終版にして◆avitl0QFUE氏に渡します。多分明後日くらいまでに。 >>55 ということで、もう少し待ってください。 2点ほど改善点が思いついているので。 64 :名無しさん@お腹いっぱい。:2008/04/08(火) 09:34:06 ID:iX+gZ6XA0 NL使ってるときにGPUがどれぐらい動いてるのか知りたいんだけど CPUメーターみたいなソフト知らない? GPU用のさ。 65 :名無しさん@お腹いっぱい。:2008/04/08(火) 09:40:05 ID:bUqkhlI/0 Riva Tuner 66 :名無しさん@お腹いっぱい。:2008/04/08(火) 09:56:52 ID:68VaT2s/0 >65 温度くらいしかわからないんじゃ? 67 :名無しさん@お腹いっぱい。:2008/04/08(火) 10:08:00 ID:bUqkhlI/0 ttp://www.imgup.org/iup589623.png.html 167 :名無しさん@お腹いっぱい。:2008/04/11(金) 00:29:35 ID:gFXglMzr0 NL-Means使用でGPUがどれぐらい頑張ってるのかパーセント表示で 見てみたいんだけど、CPUメーターのようなGPUメーターソフトありませんか? 168 :名無しさん@お腹いっぱい。:2008/04/11(金) 00:31:55 ID:tIA3O29K0 RADEONのHDシリーズならCCCのGPU Activityから使用率が見れる 169 :名無しさん@お腹いっぱい。:2008/04/11(金) 01:56:35 ID:YUp/gufA0 >>65- 206 :名無しさん@お腹いっぱい。:2008/04/12(土) 00:44:44 ID:R+adG0GpO filterByCpuをSSE2でベクトル化予告編 気がつけば期日を過ぎてましたorz 0.06に合わせてクラス作ったり時間範囲対応させたりしていたら バグが出たり書き込み規制に巻き込まれたりと遅れております。 せばいいだろ 242 :名無しさん@お腹いっぱい。:2008/04/13(日) 00:40:40 ID:fm4mEKK8O 痛快・filterByCPUをSSE2でベクトル化 範囲3 分散50 1024x786で11.124秒 -> 5.796秒 -> 4.563秒(4.515秒) -> 3.047秒(2.89秒) -> 0.922秒(0.735秒) -> 0.797秒(0.672秒) -> 0.75秒(0.609秒) get_ycp_filtering_cache_exの領域に7ピクセル以上の余裕が存在するのかわからなかったんですがまぁ気にせずに。 どこどこを読み込み中にアクセス違反が起きましたとか言われたら少し変えないといけません。 ttp://ud.gs/40h5r 243 :名無しさん@お腹いっぱい。:2008/04/13(日) 00:41:55 ID:fm4mEKK8O パス書き忘れ AviUtl 271 :名無しさん@お腹いっぱい。:2008/04/13(日) 17:09:19 ID:fm4mEKK8O バグ直しました。ご迷惑をおかけしました。 ttp://ud.gs/40h6d #endregion -42>>985氏? --http://www.geocities.jp/mosd7500/aviu.html ----- - グラボなんて意識したこと無いぜ!な自分は、CPUでの高速化にwktk -- 41991 (2008-04-06 19:34:35) - d3dx9_??.dll は単体じゃ配布できません。MSのライセンス違反になります。ふつーに最新版のランタイムをインストールした方がいいと思う -- 名無しさん (2009-05-12 07:02:43) - ご指摘ありがとうございます。ファイルは削除致しました。 -- 41991 (2009-06-26 03:50:00) - 特定の環境では計算モード3で使用するとフリーズすることがわかりました。どなたか対処法を知っている方はいませんか? -- asdf (2010-06-07 00:10:23) #comment

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。