J

2004 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 12 |
2008 | 01 | 02 | 04 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 03 | 04 | 05 | 06 | 07 | 08 | 12 |
2013 | 01 | 02 | 03 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
2014 | 01 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 02 | 03 | 04 | 05 | 06 | 07 | 10 | 11 | 12 |
2016 | 01 | 02 | 04 | 05 | 06 | 07 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 05 | 06 | 07 | 08 | 09 |

ホーム

日記内の"morihyphen.hp.infoseek.co.jp"へのリンクは切れてます。必要な場合はお手数ですが int.main.jp へ書き換えをお願いします。

TODO: ファイル名確認を忘れないこと > 自分

twitter

 | 

2015-06-02

waifu2x はやくした 16:22

なんか社内チャットで

https://github.com/WL-Amigo/waifu2x-converter-cpp

をはやくしろというメッセージを受信したのでやった。

https://github.com/tanakamura/waifu2x-converter-cpp

http://int.main.jp/files/waifu2x-converter_x64.exe

コードの大半は、@WL_Amigo さんのを流用していて、コマンドラインの入出力方法は一緒なので、使う場合はexeを置き換えてもらうだけでよいです。@WL_Amigo さんの最新では修正されてるでかい入力でメモリ使い果たす問題の修正はマージできてないので、でかい入力には使えないです。

FMA 使っているので、Haswell 以降のCPUが必須です。なんか32bit版はcl.hpp がエラー出てめんどいから見てない。

ni7-4700MQの8スレッドで、noise + x2 で

入力サイズ 960x540 256x256
もと 167sec 11.3sec
15.6sec 3.2sec
倍率 10.1x 3.5x

ぐらいまでいった。


もとのは、スレッド化してある + OpenCV(つまりSSE化済み)のなので、そこからFMA にしたから、4倍ぐらいは妥当で、そっから2倍ぐらい頑張ったという感じかな…

OpenCL 版は途中までやったけどまだ遅いからもうちょっと待って…

あとけっこう頑張ったので解説もそのうち書きたい。

(なお、この文章は一昨日書いてたのだけどアップロードする直前で @logicmachine がよりはやい版(https://github.com/logicmachine/waifu2x-opt)をだしてきたので今もうちょっと頑張った)

追記 00:51

32bit版 http://int.main.jp/files/waifu2x-converter_x86.exe

あとAVXあればFMAなしでも動くようになってるはず(Sandy以降)。

あんまチューンしてないので期待しないで。

まーチューンしてないというなら、VCがGCCより悲しいコードを出していてそもそもWindows用にチューンできてないという感じはある。GCC+Linuxならさらに20%くらいはやい。

追記06/09 00:06

http://int.main.jp/files/waifu2x-converter_x64_staticgcc.exe

本家のブロック分割をマージした。大きいファイルでも動くはず。

その影響でちょっと遅くなったのでそれをリカバーするためにOpenCVごとGCCでビルドしなおした。

960x540 でブロック分割しないと10.6[sec]、512x512のブロック分割ありで11.3[sec]ぐらい。


VCは、

v00 = MADD<have_fma>(_mm256_loadu_ps(&w[0*VEC_WIDTH]), i00, v00);
v01 = MADD<have_fma>(_mm256_loadu_ps(&w[0*VEC_WIDTH]), i01, v01);

v00 = MADD<have_fma>(_mm256_loadu_ps(&w[1*VEC_WIDTH]), i01, v00);
v01 = MADD<have_fma>(_mm256_loadu_ps(&w[1*VEC_WIDTH]), i02, v01);

v00 = MADD<have_fma>(_mm256_loadu_ps(&w[2*VEC_WIDTH]), i02, v00);
v01 = MADD<have_fma>(_mm256_loadu_ps(&w[2*VEC_WIDTH]), i03, v01);

こういうコードで _mm256_loadu_ps(&w[X*VEC_WIDTH]) のロードをスケジューリングしてしまって、レジスタスピルする悲しいコードを出していた。(GCCは想定どおりレジスタ14個使うコードを出していた)


32bit版はOpenCVビルド面倒なのでちょっと待って。欲しい人いるなら連絡もらえればやる気出てやると思う。

追記06/11 : waifu2x OpenCL23:05

http://int.main.jp/files/waifu2x-converter_x64_20150611_2.exe

多分良い感じになったはず。Linuxでしか動作確認していないので動かない可能性は残っている。(Kaveri 用のWindows入れたHDDどれかわからなくなってるので…)

親切な人いたら、動いたかどうか(とわかるなら、GPU名+最後に出てくるFLOPS値)をコメントで教えてもらえると助かります。


NVIDIAGPUで動かすとなんか止まるので、今はAMD GPU でしか有効にしていない。


効率は、理論値 737[GFLOPS] の A10-7850K で、260[GFLOPS](35%) ぐらい出ている。OpenCL部分だけならピークで360[GFLOPS](48%) ぐらい。caffe 版は効率30%〜40%ぐらいに見えるので、同じくらいの GPU なら Radeon でも caffe 版ぐらいの性能になってると予想される。


あと、http://d.hatena.ne.jp/w_o/20150609#1433854645 が気になったので、結局スレッドプール入れた。カスペル付いてる環境を使ってる人もマシになったはず。



色々考えたけど、結局、気合いブロッキングと気合いチューニングだけでなんとかした。

https://github.com/tanakamura/waifu2x-converter-cpp/blob/3843eac74730ac608bcc71a163be1df4307c260e/src/modelHandler_OpenCL.cl#L242

このへんあたりがお気に入りかな…

更新06/13 05:17

http://int.main.jp/files/waifu2x-converter_x64_20150613.exe

R9 290Xとか使ってる廃人環境向けに変更した。

具体的には最初と最後のイテレーションOpenCLにしている。最初と最後は全体の10%以下かつメモリネックなので、あんまりやる気が出なかったのだけど、R9 290Xとかだと、この部分が30〜40%ぐらいになっていたので、試しに入れてみた。

CPU強くてGPU強くない環境だと遅くなってるかも。実際Kaveri環境だとわずかに悪くなっている。メモリネックなのでキャッシュがでかいほうが有利になっていて、KaveriのGPUの帯域ではそれを挽回できてない。

まあ計測結果見る限りまだ5GB/sしか出てなくて、あと3倍ぐらいはよくできるから真面目にブロッキングすれば不可能ではない問題なのだけど、2時間くらい頑張って良くならなかったからもういいや…


とりあえずcaffe版はGTX780で700x700が1.6秒とからしいので、R9 290Xでそれと同じになるぐらいまではやる(理論性能は40%増しぐらいなので可能なら1秒切るべき)。それができたら、

  • CUDA版
  • DLL化
  • 私もUIつくる
  • 説明

で終わりにするか…

i7-2600K + R9-290X @ Linux で 700x700 ノイズ+拡大を動かした参考値

use GPU: Hawaii
Iteration #1...(6.20262[ms], 47.3417[GFLOPS], 10.8491[GB/s])
Iteration #2...(11.3175[ms], 830.27[GFLOPS], 11.5315[GB/s])
Iteration #3...(14.3321[ms], 1311.26[GFLOPS], 13.6589[GB/s])
Iteration #4...(22.1963[ms], 1693.35[GFLOPS], 11.7594[GB/s])
Iteration #5...(37.765[ms], 1990.54[GFLOPS], 10.3674[GB/s])
Iteration #6...(68.2035[ms], 2204.36[GFLOPS], 7.65402[GB/s])
Iteration #7...(4.055[ms], 289.659[GFLOPS], 64.8717[GB/s])
total : 0.172079[sec], 1701.32[GFLOPS]
start scaling
#1 2x scaling...
Iteration #1...(11.3071[ms], 101.852[GFLOPS], 23.3412[GB/s])
Iteration #2...(36.5203[ms], 1009.11[GFLOPS], 14.0153[GB/s])
Iteration #3...(51.6715[ms], 1426.43[GFLOPS], 14.8586[GB/s])
Iteration #4...(84.0687[ms], 1753.47[GFLOPS], 12.1768[GB/s])
Iteration #5...(133.917[ms], 2201.53[GFLOPS], 11.4663[GB/s])
Iteration #6...(267.429[ms], 2204.87[GFLOPS], 7.6558[GB/s])
Iteration #7...(27.189[ms], 169.429[GFLOPS], 37.9451[GB/s])
total : 0.644018[sec], 1782.86[GFLOPS]
process successfully done! (all:1.21433[sec], 1186.62[GFLOPS], filter:0.776175[sec], 1856.49[GFLOPS])

全体1.2秒で、フィルタ以外が0.5秒とかなので周辺をもう少し頑張ったほうがよい気がする。

(ブロック分割無しで動かした結果。いまのところブロックサイズはコード変更しないと変えられないので、上のexeではこの性能は出ないです)


caffe版の時間内訳わからないけど、これなら同等の効率になってると言っていいんではないかな…

続き 03:28

一区切りついたので http://d.hatena.ne.jp/w_o/20150616#1434392833 に書いた。

NN 2015/06/03 15:10 APU5800k 564x536で
waifu2x_win_koroshell
デフォ 140秒
FMA 26秒
gl 35秒
でした。gpu使うより早かったです。

w_ow_o 2015/06/03 18:29 報告ありがとうございます。参考になります。

まだOpenCL版できてないので確実なことは言えないですが、今の見解としては
- メモリネックなので glsl のように細かい制御ができないAPIでは難しい
- 工夫すればGPUでも確実に速くなる処理
- waifu2x-caffe は、処理時間を観測するかぎり(アルゴリズムに工夫の余地が無いなら)多分理論値の30%〜40%ぐらい出ている(一般的にGPUなら30%出ればかなり限界に近い)
- どんなGPUでも性能出る問題なのでおそらくOpenCL + Radeon でも caffe 版と同じくらいの性能は実現できる
というところです。

NN 2015/06/03 22:39 お返事&説明ありがとうございます。
OpenCLでも同じくらい性能がでるなら夢がありますね。

A10-7850K(Kaveri)A10-7850K(Kaveri) 2015/06/08 17:11 waifu2x-converter_x64.exe
こちら使ってみました。現状、エラーを吐くことなく快調に動いています。
まとめサイトから来ました。
そこではAVX2必須とかいていますが、KaveriはAVX1しか対応していないはずなので、ちょっと不思議に思ってみたり。
いずれにせよ、すごくはやくなり、大助かりです。><ノ
アルゴリズムを作ったひと、GUIを作った人、拡張命令版を作った人、すべての人に感謝感謝です!

PS. 大きなファイル未対応というのが、どれぐらか、少しチャレンジしてみたいお年頃。

w_ow_o 2015/06/09 00:10 あ、確かにPiledriver、Steamroller はAVX2無くてFMA有るという状態なんですね。忘れてました

正しくは、
- AVX2 : 使ってないので関係無い
- FMA あり(Haswell,Broadwell,Piledriver,Steamroller) : 最適化してある
- AVX あり(Sandy,Ivy,Bulldozer,Jaguar) : 一応動くけどあんま速くない
- AVX ない(Atom、古いの) : 動かない
です。

大きいファイルは、本家の対応をマージしたのでもう問題ないです。

YSRYSR 2015/06/09 00:25 Ver.Up来ましたか。早速試してみます!

 2015/06/09 01:44 動的リンクになってませんか

w_ow_o 2015/06/09 01:51 指摘ありがとうございます。
確かにそうなってました。ダウンロードしなおしてください。

A10-7850K(Kaveri)A10-7850K(Kaveri) 2015/06/11 02:39 なるほど。AVX2は不要なんですね。これからも安心して拡大できます。><
ところで、AVXやFMAなど、浮動小数点数演算を多用している感じがしたので、試しにベンチマーク的に色々試してみて、興味深い結果が得られたので、こちらに載せさせていただきます。

Win8 Update1
CPU/Kaveri A10-7850K(ReferenceClock/Turbo OFF)
RAM/8Gbyt(PC-1333 4Gbyt*2 DualChannel)

サンプル画像 1111x1111 (571kbyt)
指定 拡大2倍 / ノイズレベル1

対比: 1スレッド(コア指定なし)を 100とした時の、各設定のスコア
 60.4% 2スレッド・コア指定なし
 73.0% 2スレッド・0コア・1コア使用
 53.5% 2スレッド・0コア・2コア使用

 46.0% 3スレッド・(コア指定なし)

 40.3% 4スレッド・(コア指定なし)

*参考スコア:スレッド数1 1分43秒

--- --- ---
コア指定は、プログラムが動き始めてから、タスクマネージャーで手動操作なので、かなりいい加減です。ただ、各2回やっても結果は変わらないので、傾向は掴めます。
2スレッドの時が顕著で、スレッドを適切に選ばないとまるで性能が出ません。自働で設定しても性能が出し切れませんでした。Bulldozerの時に、空いてるモジュールに割り振る最適化したはずだけど、Win8で止めちゃったのかな?
また4コア使っても、適切に2コアを指示したときと比べ伸びが著しく低いです。また全体でも4割までしか下がってません。777*888のサイズでもやりましたが、マルチコアの伸びは更に悪化します。
この値を観る限り、Steamrollerの弱点をもろに突いたプログラムなのではないかと思いました。INTEL CPUだとどうなるのか、興味が沸きます。

それでは、長々と書き込んでしまい申しわけありませんでした。
少しでも、参考になることがあれば幸いです。
この辺で失礼致します。

w_ow_o 2015/06/11 23:12 ありがとうございます。性能の数値見るの個人的に好きなので、こういうのはいくら書いてもらっても嬉しいです。
これのようにFMA律速の問題だと、Bulldozer系のFPU共有はあんまりメリットないので、4コアでスケールしないのは、妥当なように思います。
あと画像サイズ奇数だとノイズ削減のほうが遅い処理になってる気が…そのうちなんとかします…

YSRYSR 2015/06/11 23:24 i7-960+Radeon HD5870+Windows7 64bitだとうまく起動しません……
ログを載せておきます。原因、分かりますか?
・コマンドプロンプト
https://ideone.com/3gRd1D
・強制終了時の表示
https://ideone.com/FJs8Sr

w_ow_o 2015/06/11 23:41 すいません、ミスってました。確実に動かないです。
http://int.main.jp/files/waifu2x-converter_x64_20150611_2.exe
こっちで試してください。

YSRYSR 2015/06/12 00:00 waifu2x-converter_x64_20150611_2も試しましたがこんな感じに……
GPUを使う場合もAVX対応は必須なんですか?
https://ideone.com/DszFZh

w_ow_o 2015/06/12 00:08 確かに、avx必要です。i7-960では動かないですね…

NN 2015/06/12 00:12 a10-5800k Win8.1ですが
Iteration #1...(22.0288[ms], 8.3123[GFLOPS])
Iteration #2...(145.017[ms], 40.4059[GFLOPS])
Iteration #3...(267.766[ms], 43.766[GFLOPS])
Iteration #4...(520.112[ms], 45.0636[GFLOPS])
Iteration #5...(1178.05[ms], 39.7913[GFLOPS])
Iteration #6...(2659.5[ms], 35.2519[GFLOPS])
Iteration #7...(19.0481[ms], 38.4522[GFLOPS])
total : 4.8969[sec], 37.281[GFLOPS]
start scaling
#1 2x scaling...
Iteration #1...(84.3329[ms], 8.47075[GFLOPS])
Iteration #2...(584.153[ms], 39.1329[GFLOPS])
Iteration #3...(1045.86[ms], 43.7142[GFLOPS])
Iteration #4...(1981.37[ms], 46.149[GFLOPS])
Iteration #5...(4550.32[ms], 40.1899[GFLOPS])
Iteration #6...(8904.13[ms], 41.0768[GFLOPS])
Iteration #7...(74.8504[ms], 38.1755[GFLOPS])
total : 17.5289[sec], 40.6311[GFLOPS]
process successfully done! (all:22.8059[sec], 39.2345[GFLOPS], filter:22.0366[sec], 40.6044[GFLOPS])
GPUの使用率は低いままでした

w_ow_o 2015/06/12 00:57 上の5800kのFMA版の性能と比べると動いてるように見えないですね。
GPUが動いているなら、ログの最初に "use GPU : <GPU名>" と出ます。出てないなら…ちょっとわからないです。

家のどこかに同じ世代のA8-4500Mかなんかがあったはずなので見つかったら調べておきます。

NN 2015/06/12 01:15 GPUは出ませんね。試しにHandbrakeのopenclリサイズ試してみましたがこれは使用率上がってました。まぁ古いものなので他の人の報告待ちで・・・

wanwan 2015/06/12 02:06 R7 250 1GB GDDR5 + i3-2105
2000x1600の画像で
> all:78.7873[sec], 120.324[GFLOPS], filter:73.5607[sec], 128.874[GFLOPS]

waifu2x-converter_x64_staticgcc.exe 174.544[sec]
koroshell付属x64 39分7秒
すごく速いです

MWMW 2015/06/12 02:10 Win8.1 290X 1280x720で
(all:4.33822[sec], 631.367[GFLOPS], filter:3.14918[sec], 869.753[GFLOPS])でした

w_ow_o 2015/06/12 07:21 ありがとうございます。とりあえず動いてるようでよかったです。
FLOPS値見る限り、caffe版の半分くらいの効率っぽいですね。もうちょっと頑張ってもよさそう。

YSRYSR 2015/06/13 16:11 Win7 SP1・AMD E-450で最新版を動かしたところ次のようになりました。元の画像サイズは200x200です。

>waifu2x-converter_x64_20150613 -i sample.jpg
use GPU: Loveland
Iteration #1...(50.6548[ms], 0.52075[GFLOPS], 0.119338[GB/s])
Iteration #2...(84.3832[ms], 10.0033[GFLOPS], 0.138935[GB/s])
Iteration #3...(155.789[ms], 10.8366[GFLOPS], 0.112882[GB/s])
Iteration #4...(284.927[ms], 11.8502[GFLOPS], 0.0822931[GB/s])
Iteration #5...(552.788[ms], 12.2161[GFLOPS], 0.0636253[GB/s])
Iteration #6...(1114.89[ms], 12.1141[GFLOPS], 0.0420627[GB/s])
Iteration #7...(56.0931[ms], 1.88105[GFLOPS], 0.421277[GB/s])
total : 2.35183[sec], 11.1825[GFLOPS]
start scaling
#1 2x scaling...
Iteration #1...(126.072[ms], 0.783079[GFLOPS], 0.179456[GB/s])
Iteration #2...(312.005[ms], 10.1254[GFLOPS], 0.14063[GB/s])
Iteration #3...(547.791[ms], 11.5342[GFLOPS], 0.120148[GB/s])
Iteration #4...(987.427[ms], 12.7976[GFLOPS], 0.0888722[GB/s])
Iteration #5...(1966.13[ms], 12.8544[GFLOPS], 0.0669498[GB/s])
Iteration #6...(4486.33[ms], 11.2668[GFLOPS], 0.0391209[GB/s])
Iteration #7...(181.081[ms], 2.18078[GFLOPS], 0.488403[GB/s])
total : 8.72153[sec], 11.2856[GFLOPS]
process successfully done! (all:12.8282[sec], 9.72294[GFLOPS], filter:10.9064[sec], 11.4362[GFLOPS])

w_ow_o 2015/06/13 17:40 ありがとうございます。
効率13%…悲しい…(理論値82-97[GFLOPS]らしい : https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units#IGP_.28HD_6xxx.29_2)
VLIW4はチューニングしてないので、改善の余地はあるはず。まあもう古いので多分やらないですが…

remrem 2015/06/14 09:37 モデルデータが更新されましたが、こちらのは、jsonファイルの入れ替えに対応してますでしょうか。
http://ultraist.hatenablog.com/entry/2015/05/17/183436

remrem 2015/06/14 09:38 すいません、リンク間違えました。こちらです。
http://ultraist.hatenablog.com/entry/2015/06/13/164619

w_ow_o 2015/06/14 12:59 多分大丈夫だと思います。.json 更新したら、隣にある .json.bin を一回削除して動かしてください。

A10-7850K(Kaveri)A10-7850K(Kaveri) 2015/06/14 22:54 .json
差し替えで、新しいのが動作することを確認しました。

なお、OpenCL版使いましたが、拡大の6番目の処理でクラッシュしました。
HD 6670(Turks)で動作していることは確認済み。
ただしドライバが古く、
Catalyst 14.2
の状態です。ゲーム用に組んでいるので、安定した状態でのアップデートに躊躇してます。なので、ただの結果報告です。

また、UEFIで、kaveriのGPU(割当量自動)を強制始動させていても、コマンドなどで対応できるのかもしれませんが、現状は6670が動きます。

今後の予定をみていて、
CUDAよりもKaveri (HAS,hQ) 対応で組んだら、さぞ効率のいいソフトに仕上がりそうだなんて。しかし、あたりを見回してもCUDAしか情報がないところみると、OS未対応、AMDからの情報も皆無でどこも不可能なのでしょう・・・それでもGPU腐らせてるので興味があります。

CSFCSF 2015/06/15 00:51 すでに同じ7850Kをお持ちのようで恐縮ですが、動作報告しておきます。

環境: win8.1pro KASPERSKY2014MPS CATALYST14.4 A10-7850K DDR3-2133 4GB*2
画像サイズ: JPEG 1000*960 304KB

以下実行結果。長いとこは「〜略〜」してます。
OpenCL
waifu2x-converter_x64_20150611_2.exe -i chokkura-LAWSON.jpg
use GPU: Spectre 〜略〜 total : 2.68084[sec], 211.565[GFLOPS]
start scaling
#1 2x scaling...
start process block (0,0) ... 〜略〜 total : 2.78949[sec], 215.87[GFLOPS]
start process block (1,0) ... 〜略〜 total : 2.77311[sec], 212.904[GFLOPS]
start process block (0,1) ... 〜略〜 total : 2.5446[sec], 213.535[GFLOPS]
start process block (1,1) ... 〜略〜 total : 2.49546[sec], 213.488[GFLOPS]
process successfully done! (all:14.3604[sec], 197.477[GFLOPS], filter:12.6783[se
c], 223.678[GFLOPS])
なお、各Iterationの中での最大値は291.936[GFLOPS]

FMA(gcc)
waifu2x-converter_x64_staticgcc.exe -i chokkura-LAWSON.jpg
 〜略〜 
process successfully done! (43.3764[sec])

FMA
waifu2x-converter_x64.exe -i chokkura-LAWSON.jpg
 〜略〜 
process successfully done! (57.5056[ms])

やっぱりOpenCL版は速いですね。今後も大いに活躍してくれそうです。

w_ow_o 2015/06/15 04:45 > なお、OpenCL版使いましたが、拡大の6番目の処理でクラッシュしました。
6番目で止まるのはメモリ足りてない可能性が高いです。
小さい画像で試すか、
http://int.main.jp/files/waifu2x-converter_x64_20150615.exe
で、ブロックサイズ指定できるようにしたので、--block_size 512 付けて試してもらってよいですか?

> また、UEFIで、kaveriのGPU(割当量自動)を強制始動させていても、コマンドなどで対応できるのかもしれませんが、現状は6670が動きます。
複数GPUがあった時は単に最初に見つかったものを選んでいるだけなので
どれが動くかはよくわからないです。

> CUDAよりもKaveri (HAS,hQ) 対応で組んだら、さぞ効率のいいソフトに仕上がりそうだなんて
ほぼGPU内部だけで完結してる処理なので、HSAは多分有っても無くてもほぼ関係ないですね…

w_ow_o 2015/06/15 04:47 > すでに同じ7850Kをお持ちのようで恐縮ですが、動作報告しておきます。
ありがとうございます。A10+Windowsは無いので参考になります。

手元よりちょっと遅いように見えますね…。Windowsはなんかうまいことやらないと余計なオーバーヘッド乗ってるように見えます。

A10-7850K(Kaveri)A10-7850K(Kaveri) 2015/06/15 22:38 こんばんは。
アップロードされたファイルですが、無事に完走することができました。
結果は次の通りです。

コマンド
>> waifu2x-converter_x64_CL.exe -i original.png -o d:\test.png -m noise_scale -j 8 --scale_ratio 1.6 --noise_level 2 --block_size 512

参考値
>> A10-7850K CPU (PC-1333) *推定値はGPUの時間とFLPOSから算出。


サイズ 300-400
process successfully done! (all:6.29034[sec], 59.3395[GFLOPS], filter:5.68597[sec], 65.6468[GFLOPS])

>> A10-7850K CPU
process successfully done! (6.87735[sec]) *推定 48[GFLOPS]

--- --- --- --- --- --- --- --- --- --- --- --- --- --- ---

サイズ 600-800
process successfully done! (all:26.3494[sec], 56.1586[GFLOPS], filter:25.0341[sec], 59.1093[GFLOPS])

>> A10-7850K CPU
process successfully done! (23.5645[sec]) *推定 66[GFLOPS]

--- --- --- --- --- --- --- --- --- --- --- --- --- --- ---

サイズ 1200-1600
process successfully done! (all:103.869[sec], 56.4096[GFLOPS], filter:100.574[sec], 58.2573[GFLOPS])

>> A10-7850K CPU
process successfully done! (89.0048[sec]) *推定 65[GFLOPS]

--- --- --- --- --- --- --- --- --- --- --- --- --- --- ---

各所で仕入れた生の演算スピードだけみると、
HD 6670 (768 GFLOPS)
Kaveri-GPU (737 GFLOPS)
Kaveri-CPU (118 GFLOPS)

VLIW4はGPGPUではなく、3D(特にDX9)に最適化されていると昔どこかで聞いたので、順当な所かも。AVX1とFMA3が使える環境であえて選ぶものではない気がしました。

他の方の記録を見る限り、内蔵されてるGCNだと、DDR3という遅いメモリでも十分な速度がでてるようなので、DX9世代のゲームをやる分には殆ど感じないアーキテクチャの違いがよくわかる処理だなぁと思いました。

最後、OpenCL中にCPU稼働率をみたら、クロック下がって、使用率も一桁と二桁いったりきたりと、殆ど活動してませんでした。

w_ow_o 2015/06/15 23:36 動いたようでよかったです。
--disable-gpu 付けるとGPU使わないようになるので、計測目的の場合はそちらを使っていただけると多少楽になると思います。

プログラム自体はかなり単純なので、VLIW4 でもやれば速くなる問題なはずです。
- ローカルメモリ半分になるのをケアする(ワークアイテム数1/4にしても性能出るはずなので調整する)
- 最内ループの8アンロールしたFMAがVLIWに埋まってなければfloat4に書きかえる
で、なんとかなるのではないかなーと思ってます。

トラックバック - http://d.hatena.ne.jp/w_o/20150602
 |