更新06/13

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版の時間内訳わからないけど、これなら同等の効率になってると言っていいんではないかな…